首页 > 其他 > 详细

剑指offer——35二叉树的后序遍历

时间:2019-10-16 00:31:32      阅读:99      评论:0      收藏:0      [点我收藏+]

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
 
题解:
  这道题,一开始以为将后序遍历排序后的得到中序遍历,然后利用后序遍历和中序遍历进行二叉树的重组,但是由于后序遍历未必是BST树的,故得到的中序遍历未必是正确的;
  所以,根据后序遍历,直接对树的左右子树进行判断。
  
 1 class Solution {
 2 public:
 3     bool VerifySquenceOfBST(vector<int> sequence) {
 4         if (sequence.size() == 0)return false;
 5         return isBST(sequence, 0, sequence.size() - 1);
 6     }
 7     bool isBST(vector<int>v, int L, int R)
 8     {
 9         if (L >= R)return true;
10         int root = v[R];
11         int i = L;
12         while (v[i] < root)++i;//找到左子树
13         int j = i;
14         while (j < R)if (v[j++] < root)return false;//判断右子树
15         return isBST(v, L, i - 1) && isBST(v, i, R - 1);    
16     }    
17 };

 

剑指offer——35二叉树的后序遍历

原文:https://www.cnblogs.com/zzw1024/p/11681930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!