当前位置: 首页 > news >正文

二叉搜索树的后序遍历序列-C++

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程https://www.captainai.net/troubleshooter

// 面试题33:二叉搜索树的后序遍历序列 // 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 // 如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 #include <cstdio> // BST:Binary Search Tree,二叉搜索树 bool VerifySquenceOfBST(int sequence[], int length) { if (sequence == nullptr || length <= 0) return false; int root = sequence[length - 1]; // 在二叉搜索树中左子树的结点小于根结点 int i = 0; for (; i < length - 1; ++i) { if (sequence[i] > root) break; } // 在二叉搜索树中右子树的结点大于根结点 int j = i; for (; j < length - 1; ++j) { if (sequence[j] < root) return false; } // 判断左子树是不是二叉搜索树 bool left = true; if (i > 0) left = VerifySquenceOfBST(sequence, i); // 判断右子树是不是二叉搜索树 bool right = true; if (i < length - 1) right = VerifySquenceOfBST(sequence + i, length - i - 1); return (left && right); } // ====================测试代码==================== void Test(const char *testName, int sequence[], int length, bool expected) { if (testName != nullptr) printf("%s begins: ", testName); if (VerifySquenceOfBST(sequence, length) == expected) printf("passed.\n"); else printf("failed.\n"); } // 10 // / \ // 6 14 // /\ /\ // 4 8 12 16 void Test1() { int data[] = {4, 8, 6, 12, 16, 14, 10}; Test("Test1", data, sizeof(data) / sizeof(int), true); } // 5 // / \ // 4 7 // / // 6 void Test2() { int data[] = {4, 6, 7, 5}; Test("Test2", data, sizeof(data) / sizeof(int), true); } // 5 // / // 4 // / // 3 // / // 2 // / // 1 void Test3() { int data[] = {1, 2, 3, 4, 5}; Test("Test3", data, sizeof(data) / sizeof(int), true); } // 1 // \ // 2 // \ // 3 // \ // 4 // \ // 5 void Test4() { int data[] = {5, 4, 3, 2, 1}; Test("Test4", data, sizeof(data) / sizeof(int), true); } // 树中只有1个结点 void Test5() { int data[] = {5}; Test("Test5", data, sizeof(data) / sizeof(int), true); } void Test6() { int data[] = {7, 4, 6, 5}; Test("Test6", data, sizeof(data) / sizeof(int), false); } void Test7() { int data[] = {4, 6, 12, 8, 16, 14, 10}; Test("Test7", data, sizeof(data) / sizeof(int), false); } void Test8() { Test("Test8", nullptr, 0, false); } int main(int argc, char *argv[]) { Test1(); Test2(); Test3(); Test4(); Test5(); Test6(); Test7(); Test8(); return 0; } // ------ Output ------ /* Test1 begins: passed. Test2 begins: passed. Test3 begins: passed. Test4 begins: passed. Test5 begins: passed. Test6 begins: passed. Test7 begins: passed. Test8 begins: passed. */
http://www.jsqmd.com/news/713332/

相关文章:

  • SublimeREPL架构解析:深入理解REPL插件的设计原理
  • 2026年贵阳炭火烤肉与竹签烤肉正宗铁签烤肉店怎么选 - 年度推荐企业名录
  • 房产中介佣金计算太复杂?一张决策表带你理清所有测试场景(附完整用例模板)
  • 2025届学术党必备的AI科研网站横评
  • 把数组排成最小的数-C++
  • Windows蓝屏0xE6?别慌,手把手教你用WinDbg分析DRIVER_VERIFIER_DMA_VIOLATION
  • 3个步骤解锁Switch终极潜能:大气层系统完整安装与使用指南
  • MouseClick鼠标连点器:智能化跨平台自动化解决方案深度解析
  • 从零到上手:用SmartBI V10.x实战演练数据可视化全流程(附自助仪表盘与大屏制作避坑指南)
  • 告别网盘限速:LinkSwift直链下载工具终极指南
  • 终极FF14过场动画跳过插件:3分钟快速上手完整指南
  • 摄像机标定
  • 快速体验胶片质感AI绘画:FLUX.1-Krea真实感模型部署与试用
  • 别再被PyTorch的checkpoint坑了!深入state_dict,彻底搞懂参数组匹配问题
  • 3行命令搞定抖音批量下载:douyin-downloader无水印视频下载终极指南
  • 如何实现跨平台设备无缝发现?LocalSend零配置识别技术全解析
  • 2025最权威的六大AI学术助手推荐
  • DesktopNaotu:你的终极跨平台离线思维导图解决方案
  • Windows Cleaner:3分钟告别C盘爆红,让你的电脑重获新生!
  • STM32低功耗实战:用PWR模块让你的电池供电设备续航翻倍(附代码)
  • 告别文献翻译烦恼:Zotero PDF Translate让你的科研效率提升3倍
  • 3步告别激活烦恼:KMS智能激活工具完全指南
  • 亲测可用 免费使用 云远程调试软件V2.1.0 远程串口调试 远程网口调试
  • 当Windows 10成为“负重者“:一个命令行工具如何帮你夺回系统控制权
  • 病理科医生的数字助手:如何用QuPath免费软件高效标注与分析WSI切片(实战分享)
  • 3分钟极速安装:Android Studio中文语言包完整指南
  • 探索 Yew 生态系统:构建高效 Rust Web 应用的完整工具链指南
  • 手把手教你为ZYNQ项目添加自定义PWM:基于AXI Timer的PL引脚配置与波形调试实录
  • 如何在5分钟内免费搭建OBS RTSP服务器:完整配置指南
  • 别再只会改lr了!详解PyTorch中optimizer.param_groups的动态调整技巧