剑指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. 复杂链表的复制
⭐算法入门⭐《二叉树 - 二叉搜索树》中等01 —— LeetCode 剑指 Offer 33. 二叉搜索树的后序遍历序列
⭐算法入门⭐《二叉树 - 二叉搜索树》中等02 —— LeetCode 剑指 Offer 33. 二叉搜索树的后序遍历序列