博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指offer】33、二叉搜索树的后序遍历序列
阅读量:5361 次
发布时间:2019-06-15

本文共 1136 字,大约阅读时间需要 3 分钟。

题目

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

思路

思想很简单,后序遍历的最后一个数字是根节点,检查根节点是不是比左子树都要大,比右子树都要小。

接着把序列分成两半,递归检查左子树和右子树是否满足后序遍历。

class Solution {public:    bool VerifySquenceOfBST(vector
sequence) { if (sequence.size() == 0) return false; int length = sequence.size(); 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, right = true; vector
LeftTree, RightTree; for (int m = 0; m < i; m++) LeftTree.push_back(sequence[m]); for (int m = i; m < length - 1; m++ ) RightTree.push_back(sequence[m]); if (i > 0) left = VerifySquenceOfBST(LeftTree); if (i < length - 1) right = VerifySquenceOfBST(RightTree); return (left && right); }};

 

转载于:https://www.cnblogs.com/shiganquan/p/9342210.html

你可能感兴趣的文章
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
Luogu P1141 01迷宫【搜索/dfs】By cellur925
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>
团队项目--未完待续
查看>>
双重标准,我该怎么解决
查看>>
python中的网页标签等字符处理
查看>>
Mybatis输入类型和结果类型
查看>>
Linux常用命令(五)
查看>>
Linux常用命令(四)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(六)
查看>>
Linux常用命令(八)
查看>>
Linux常用命令(七)
查看>>
Linux常用命令(九)
查看>>
Linux常用命令(十一)
查看>>
Linux常用命令(十)
查看>>
实验吧之这就是一个坑
查看>>