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

Posted zzw1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer——35二叉树的后序遍历相关的知识,希望对你有一定的参考价值。

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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二叉树的后序遍历的主要内容,如果未能解决你的问题,请参考以下文章

872. 叶子相似的树 / 剑指 Offer 33. 二叉搜索树的后序遍历序列 / 剑指 Offer 34. 二叉树中和为某一值的路径 / 剑指 Offer 35. 复杂链表的复制

剑指offer 二叉树的后序遍历序列

二叉搜索树的后序遍历序列(剑指offer-23)

Java 剑指offer(33) 二叉搜索树的后序遍历序列

⭐算法入门⭐《二叉树 - 二叉搜索树》中等01 —— LeetCode 剑指 Offer 33. 二叉搜索树的后序遍历序列

⭐算法入门⭐《二叉树 - 二叉搜索树》中等02 —— LeetCode 剑指 Offer 33. 二叉搜索树的后序遍历序列