ztree treenode判断是否根节点_[剑指offer]28判断后序遍历

今天开始讲和大家坚持打卡面试非常重要算法练习---剑指offer,希望我们能一起肝。

1 题目描述

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

2 思路----c++

  • 后序遍历中,最后一个数字是整棵树的根节点

  • 数组中前面数字分为两部分

  • 一部分是左子树节点的值,都比根节点小

  • 一部分是右子树节点的值,都比根节点值打

3 代码实现

c++版本

//数组分为两部分,左边小于根节点 右边大于根节点

class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        int size= sequence.size();
        if(0==size){
            return false;
        }
        int i=0;
        while(--size){
            while(sequence[i++]            while(sequence[i++]>sequence[size]);

            if(i                return false;
            }
            i=0;
        }
        return true;
    }
};

java版本

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length == 0){
            return false;
        }
        if(sequence.length == 1){
            return true;
        }
        return judge(sequence,0,sequence.length-1);
    }

    public boolean judge(int[] a,int start,int end){
        if(start >= end){
            return true;
        }
        int i = start;
        while(a[i]             ++i;
        }
        for(int j=i;j            if(a[j]                 return false;
            }
        }
        return judge(a,start,i-1) && judge(a,i,end-1);
    }
}

python版本

class Solution:
    def VerifySquenceOfBST(self, sequence):
        # write code here
        if sequence==None or len(sequence)==0:
            return False
        length=len(sequence)
        root=sequence[length-1]#最后节点的值
        # 在二叉搜索 树中 左子树节点小于根节点 走完左
        for i in range(length):
            if sequence[i]>root:
                break
        # 二叉搜索树中右子树的节点都大于根节点 再判断区间(i.length]
        for j  in range(i,length):
            if sequence[j]                return False
        # 判断左子树是否为二叉树
        left=True
        if  i>0:
            left=self.VerifySquenceOfBST(sequence[0:i])
        # 判断 右子树是否为二叉树
        right=True
        if i-1:
            right=self.VerifySquenceOfBST(sequence[i:-1])return left and right

4 唠嗑

2020年7月27日打卡,打卡格式"打卡XX天"。暖蓝汇聚大家一起,探讨简历修改,面试经历分享,尽全力让大家能在2020找到理想的工作。如果你想加入,加我拉你进面试交流群。

60abf6e44de14a804052cd55d56ea6d1.png

[剑指offer]20二叉树的镜像[剑指offer]19连续子数组最大和[剑指offer]2替换空格[剑指offer]3从尾到头打印链表[剑指offer]4栈实现队列[剑指offer]5斐波那契数列[剑指offer]6跳台阶[剑指offer]8二进制中1的个数炸裂!万字长文拿下HTTP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值