码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-16 00:33:45      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:输入   style   roo   off   enc   tle   sub   root   esc   

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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二叉树的后序遍历

标签:输入   style   roo   off   enc   tle   sub   root   esc   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!