八:二叉搜索树的后序遍历

原创 2015年07月09日 22:28:13

二叉搜索树:(又称:二叉查找树,二叉排序树)

满足性质:

(1) 它或者是一棵空树;

(2) 或者是具有下列性质的二叉树:

  <1> 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

  <2> 若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

  <3> 左、右子树也分别为二查找序树;

 

问题描述:

输入一个整数数组,判断该数组是不是某二叉查找树的后序遍历的结果。如果是返回true,否则返回false。


解析:

根据后序遍历的定义,如果一个序列是二叉树的后续遍历的结果,那么我们不难得出,序列的最后一个节点必定是二叉树的根节点,除了根节点外,序列中前一部分是二叉树的左子树的节点,后面一部分是二叉树的右子树的节点。同理,左右子树的遍历结果也具有一样的特点。


代码如下:

bool VerifySquenceOfBST(int sequence[], int length)

{

    if(sequence== NULL || length <= 0)

        returnfalse;

 

    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);

}




注:《剑指offer》学习笔记

判断是否是二叉查找树的后序遍历结果

题目: 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:  ...
  • LaoJiu_
  • LaoJiu_
  • 2016年03月07日 16:22
  • 1410

二叉搜索树的后序遍历序列

何海涛:《剑指Offer:名企面试官精讲典型编程题》:九度OJ 题目描述:http://ac.jobdu.com/problem.php?cid=1039&pid=9 输入一个整数数组,判...
  • shanshanpt
  • shanshanpt
  • 2013年03月18日 09:05
  • 3806

【剑指Offer】二叉搜索树的后序遍历序列

问题描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。背景知识:二叉搜索树(Binary Search T...
  • zgljl2012
  • zgljl2012
  • 2015年09月19日 01:57
  • 1682

二叉搜索树的后序遍历序列

  • 2016年01月21日 19:38
  • 1KB
  • 下载

二叉搜索树的后序遍历序列

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路: 1,后续遍历序列的最后一个数字是...
  • u012824097
  • u012824097
  • 2016年10月19日 21:41
  • 96

二叉搜索树的后序遍历序列:递归中不要过早return f(左)&&f(右)

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 总结:递归中不要过早return f(左...
  • qq_29108585
  • qq_29108585
  • 2017年03月15日 15:42
  • 125

【剑指offer】面试题33:二叉搜索树的后序遍历序列

题目输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历结果。 如果是则返回true,否则返回false。 假设输入的数组的任意两个数字互不相同。 例如: 输入数组{5, 7, 6, 9,...
  • qq1263292336
  • qq1263292336
  • 2017年07月27日 16:57
  • 107

《剑指offer》——二叉搜索树的后序遍历序列

T: 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 考察二叉搜索树的后序遍历特征,...
  • shansusu
  • shansusu
  • 2015年11月28日 11:32
  • 540

剑指offer_面试题24_二叉搜索树的后序遍历序列(递归)

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 二叉搜索树规律: 1、若 左子树 不空,则...
  • jwentao01
  • jwentao01
  • 2015年08月17日 10:01
  • 481

二叉搜索树的后序遍历序列

题目大意:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 分析:本题给定一个xuli...
  • zhao_shanshan
  • zhao_shanshan
  • 2014年10月07日 17:00
  • 419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:八:二叉搜索树的后序遍历
举报原因:
原因补充:

(最多只允许输入30个字)