《剑指offer》——二叉搜索树的后序遍历序列
来源:互联网 发布:桌面图标归类软件 编辑:程序博客网 时间:2024/06/10 02:30
二叉搜索树:
它或者是一棵空树,或者是具有下列性质的二叉树。若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
总结,如果数组中判定属于二叉搜索树右子树的部分中有大于其根节点的元素,则该序列一定不是该二叉搜索树的后序遍历序列。
bool VerifySquenceOfBST(vector<int> sequence){ if(sequence.empty())//输入数组为空,返回false return false; bool l = true, r = true;//设置标识左右子树是否正确的变量,初始化为true vector<int> left, right;//辅助子数组 int root = sequence.back();//根节点 int i, j; //判定属于左子树的元素 for(i = 0; i < sequence.size() - 1; i++) { if(sequence[i] < root) left.push_back(sequence[i]); else//如果元素大于根节点,则结束循环 break; } //剩余部分即属于右子树,注意j的起始值为i for(int j = i; j < sequence.size() - 1; j++) { if(sequence[j] > root) right.push_back(sequence[j]); else//如果元素小于根节点,则该序列一定不是该二叉搜索树的后序遍历序列,直接返回false return false; } if(!left.empty())//如果左子树不为空,继续迭代判定 l = VerifySquenceOfBST(left); if(!right.empty())//如果右子树不为空,继续迭代判定 r = VerifySquenceOfBST(right); return l && r;//返回值为l与r的与}
0 0
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指Offer-->二叉搜索树的后序遍历序列
- 《剑指offer》二叉搜索树的后序遍历序列
- 【剑指Offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指 offer:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列||剑指offer
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- [剑指offer]二叉搜索树的后序遍历序列
- 《剑指offer》-二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- NSInteger 与 NSUInteger 和 int与 NSInteger 区别
- 开发者日记(2016年01月07日11:52:28):关于android 广播的学习:
- git添加SSH Keys方法
- NSSet类型 以及与NSArray区别
- 设计模式-适配器模式
- 《剑指offer》——二叉搜索树的后序遍历序列
- 汇智慧网-Angular2
- wordpress IP黑名单插件:IP Blacklist Cloud屏蔽攻击者IP让网站更安全
- 文章关键词提取算法
- 插入排序二分排序冒泡排序
- Sicily 1530. The Seven Percent Solution
- 设计模式-桥接模式
- Git基本常用命令
- File and Print Services for Microsoft® Windows® Clients (Samba)