《苦练算法》-剑指Offer- 二十三、二叉搜索树的后序遍历序列 -python编写
2018-02-07 22:17
423 查看
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题目补充
1. 二叉搜索树
取自百度百科说的很清楚
总结的讲 就是这个树 的每个节点的左节点都要比这个节点小,每个节点的有节点都要比这个节点大。叫做搜索树的原因在于,这种结构下,通过判断每个节点与要搜索的数字进行对比可以很快的搜索到
具体操作可以见这篇很生动的文章
2.后序遍历,即根节点在最后的遍历方式,即为: 左右根的遍历方式。
题目分析
本题明显考的又是递归或是循环
1.递归的话就是,每次把根节点拿出来,之后从后往前循环到比根大的位置说明此时应该到了左子树的位置,之后把左子树和右子树全都分离出来,此时已经默认右子树ok的,那就循环左子树看是否满足所有元素都小于根的值,如果ok的话,之后继续递归左子树如上述判断方式,右子树亦然,递归停止条件就是开始节点的index大于等于标记根节点的index
具体代码如下:
2.循环思路和递归差不多,也就是代码表现形式不太一样
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
题目补充
1. 二叉搜索树
取自百度百科说的很清楚
总结的讲 就是这个树 的每个节点的左节点都要比这个节点小,每个节点的有节点都要比这个节点大。叫做搜索树的原因在于,这种结构下,通过判断每个节点与要搜索的数字进行对比可以很快的搜索到
具体操作可以见这篇很生动的文章
2.后序遍历,即根节点在最后的遍历方式,即为: 左右根的遍历方式。
题目分析
本题明显考的又是递归或是循环
1.递归的话就是,每次把根节点拿出来,之后从后往前循环到比根大的位置说明此时应该到了左子树的位置,之后把左子树和右子树全都分离出来,此时已经默认右子树ok的,那就循环左子树看是否满足所有元素都小于根的值,如果ok的话,之后继续递归左子树如上述判断方式,右子树亦然,递归停止条件就是开始节点的index大于等于标记根节点的index
具体代码如下:
# -*- coding:utf-8 -*- class Solution: def VerifySquenceOfBST(self, sequence): # write code here if len(sequence) == 0: return False if len(sequence) == 1: return True return self.isLastOrder(sequence,0,(len(sequence)-1)) def isLastOrder(self,s,start,root): if start >= root: return True i = root while i > start and s[i-1]>s[root]: i = i - 1 for j in range(start,i-1): if s[j] > s[root]: return False return self.isLastOrder(s,start,i-1) and self.isLastOrder(s,i,root-1)
2.循环思路和递归差不多,也就是代码表现形式不太一样
# -*- coding:utf-8 -*- class Solution: def VerifySquenceOfBST(self, sequence): # write code here l = len(sequence) if l == 0: return False if l == 1: return True i = 0 l = l-1 while(l): while sequence[i]<sequence[l]: i = i + 1 while sequence[i]>sequence[l]: i = i + 1 if i != l: return False i = 0 l = l-1 return True
相关文章推荐
- 剑指Offer----面试题24:二叉搜索树的后序遍历序列
- 【剑指offer】十六,二叉搜索树的后序遍历序列
- 剑指offer——二叉搜索树的后序遍历序列
- 【剑指Offer面试题】 九度OJ1367:二叉搜索树的后序遍历序列
- 【剑指Offer】二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer--面试题24: 二叉搜索树的后序遍历序列
- 剑指Offer——(23)二叉搜索树的后序遍历序列
- 剑指Offer--024-二叉搜索树的后序遍历序列
- 【九度OJ1367】|【剑指offer24】二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer_二叉搜索树的后序遍历序列
- 剑指offer-面试题24-二叉搜索树的后序遍历序列
- 剑指Offer——二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer代码解析——面试题24二叉搜索树的后序遍历序列
- 剑指offer :二叉搜索树的后序遍历序列
- 剑指Offer 24 二叉搜索树的后序遍历序列
- 剑指offer代码解析——面试题24二叉搜索树的后序遍历序列
- 剑指offer 23 二叉搜索树的后序遍历序列