首页 > 其他分享 >JZ33 二叉排序树的后序遍历序列

JZ33 二叉排序树的后序遍历序列

时间:2024-04-19 22:14:28浏览次数:18  
标签:遍历 return 后序 int JZ33 sequence 二叉 序列

image
image
image
image

class Solution {
public:
    //判断该数组是不是某二叉搜索树的后序遍历的结果。
    //如果是则返回 true ,否则返回 false 
    //注意传入参数是一个int类型的vector容器

    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.empty()) 	//二叉树为空,则返回flase
            return false;
        return VerifyCore(sequence, 0, sequence.size()-1);

    }
	//参数:(后序序列,遍历范围左端,遍历范围右端)
    bool VerifyCore(vector<int> &s, int l, int r)
    {
        if(l >= r) 			//递归结束条件:序列中的值都被遍历完了,也就是从l到r都遍历完了
            return true;
        
        int root = s[r];	//找到根节点

        int i = l;			
        for( ; i<r; i++)	//遍历左子树,找到第一个比根大的节点,后边的都是右子树
        {
            if(s[i] > root)
                break;
        }
        for(int j = i; j< r;j++)	//遍历右子树,看右子树中是否有比根小的节点,若有,则不是后序遍历序列
        {
            if(s[j]<root)
                return false;
        }
		
        //返回值是左子树和右子树都满足排序二叉树的条件才可以!
        return VerifyCore(s, l, i-1) && VerifyCore(s, i, r-1);
    }

};

标签:遍历,return,后序,int,JZ33,sequence,二叉,序列
From: https://www.cnblogs.com/H43724334/p/18146854

相关文章

  • JZ68 二叉搜索树的最近公共祖先
    classSolution{public://在哪分开,哪里就是公共祖先!//中序遍历二叉树TreeNode*ans;intlowestCommonAncestor(TreeNode*root,intp,intq){//writecodehereintMin=min(p,q);intMax=max(p,q);InOrder(......
  • Effective Python:第8条 用zip函数同时遍历两个迭代器
    用Python内置的zip函数来实现。这个函数能把两个或更多的iterator封装成惰性生成器(lazygenerator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。names=["Cecilia","Lise","Marie"]counts=[len(n)forninnames]max_count=......
  • 树3-二叉树非递归遍历(栈)
    树3-二叉树非递归遍历(栈)拷贝根结点,初始值FALSE,入栈弹出,如果是FALSE,将根节点将更新为TRUE,其子结点(初始值FALSE)一并入栈[A,B,C](前序遍历,入栈顺序:C,B,A输出顺序:A,B,C)再弹出,如果是TRUE则输出引入链式栈头文件#include"linkedStack.h"链式栈头文......
  • JZ36二叉树排序树与双向链表
    /*structTreeNode{ intval; structTreeNode*left; structTreeNode*right; TreeNode(intx): val(x),left(NULL),right(NULL){ }};*/#include<cstddef>classSolution{public: TreeNode*ans=nullptr; //最终的链表 TreeNode*pre=nullptr; ......
  • 树1-二叉树概念与遍历方法
    树1:二叉树概念与遍历方法二叉树二叉树的遍历二叉树遍历分为前序,中序,后序.序是指遍历根结点的顺序D-data,根L左R右,先序遍历ABCDE-FGH中序遍历BDCE-A-FHG后序遍历DECB-HGF-A先序遍历ABDH-I-EJCFG中序遍历HDI-B-JEAFCG后序遍历HID-J......
  • 树2-二叉树拷贝, 遍历, 计算叶子结点和高度
    树2-二叉树拷贝,遍历,计算叶子结点和高度二叉树结点typedefstructBinaryNode{charch;structBinaryNode*lChild;structBinaryNode*rChild;}BinaryNode;//叶子结点的数量intsum;二叉树遍历前序//递归遍历(前序)voidRecursion(BinaryNode*roo......
  • vue3 获取遍历的子组件
    <template><div><!--使用v-for遍历数据,并为每个子组件设置一个ref--><ChildComponentv-for="(item,index)initems":key="index":ref="el=>setChildRef(el,index)"/></div>......
  • 2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。 游戏
    2024-04-17:用go语言,欢迎各位勇者莅临力扣城,本次的挑战游戏名为「力扣泡泡龙」。游戏的起点是一颗形状如二叉树的泡泡树,其中每个节点的值代表该泡泡的分值。勇者们有一次机会可以击破一个节点泡泡,但需要满足以下规则:被击破的节点泡泡最多只能有一个子节点泡泡。如果被击破的节点......
  • VBS遍历文件或文件夹路径输入文件的所有绝对路径(附源码)
    <p>源码如下:</p>FunctionlistFilesPath(filepath)t1=Timer()Debug.WriteLine"****现在开始执行计数,用时:"+CStr(t1)Setfso=CreateObject("scripting.filesystemobject")Setmyfolder=fso.GetFolder(filepath)......
  • JZ27 二叉树的镜像
    /***structTreeNode{* intval;* structTreeNode*left;* structTreeNode*right;* TreeNode(intx):val(x),left(nullptr),right(nullptr){}*};*/classSolution{public:/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回......