平衡二叉树实例--判断输入后序序列是否为平衡二叉树

Posted pengtangtang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡二叉树实例--判断输入后序序列是否为平衡二叉树相关的知识,希望对你有一定的参考价值。

 1 bool verifyPostorder(vector<int>& postorder){
 2 if(postorder.empty())  return true;
 3 bool res = helper(postorder,0,postorder.sizee()-1);
 4 return res;
 5 }
 6 
 7 bool  helper(vector<int>& postorder,int start,int end){
 8 if(postorder.empty() || start>end)  return false;
 9 
10 int root = postorder[end];
11 int i = start;
12 
13 for(;i<end;i++){
14 if(postorder[i]<root)
15 break;
16 }
17 for(int j = i;j<end;j++){
18 if(postorder[j]<root)
19 return false;
20 }
21 bool left = true;
22 if(i>start)//是否有左子鼠
23 left = helper(postorder,start,i-1);
24 bool right = true;
25 if(i<end-1)//是否有柚子树
26 right = helper(postorder,i,end-1);
27 }

 

/*
确定根节点root;
遍历序列(除去root结点),找到第一个大于root的位置,则该位置左边为左子树,右边为右子树;
遍历右子树,若发现有小于root的值,则直接返回false;
分别判断左子树和右子树是否仍是二叉搜索树(即递归步骤1、2、3)。
*/

以上是关于平衡二叉树实例--判断输入后序序列是否为平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章

判断二叉树是否平衡二叉树

判断二叉树是否为平衡二叉树

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

55-02 平衡二叉树

推断二叉树是否平衡

[数据结构4.8]平衡二叉树