博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
八:二叉搜索树的后序遍历
阅读量:5051 次
发布时间:2019-06-12

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

二叉搜索树:(又称:二叉查找树,二叉排序树)

满足性质:

(1) 它或者是一棵空树;

(2) 或者是具有下列性质的二叉树:

  <1> 若左子树不空。则左子树上全部结点的值均小于它的根结点的值。

  <2> 若右子树不空,则右子树上全部结点的值均大于它的根结点的值;

  <3> 左、右子树也分别为二查找序树;

 

问题描写叙述:

输入一个整数数组,推断该数组是不是某二叉查找树的后序遍历的结果。

假设是返回true。否则返回false。

解析:

依据后序遍历的定义,假设一个序列是二叉树的兴许遍历的结果,那么我们不难得出。序列的最后一个节点必然是二叉树的根节点。除了根节点外。序列中前一部分是二叉树的左子树的节点。后面一部分是二叉树的右子树的节点。同理。左右子树的遍历结果也具有一样的特点。

代码例如以下:

bool VerifySquenceOfBST(int sequence[], int length)

{

    if(sequence== NULL || length <= 0)

        returnfalse;

 

    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;

    if(i > 0)

        left =VerifySquenceOfBST(sequence, i);

 

    // 推断右子树是不是二叉搜索树

    bool right =true;

    if(i <length - 1)

        right =VerifySquenceOfBST(sequence + i, length - i - 1);

 

    return (left&& right);

}

注:《剑指offer》学习笔记

转载于:https://www.cnblogs.com/zfyouxi/p/5337074.html

你可能感兴趣的文章
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
shell判断网络主机存活
查看>>
根据时间戳,增量同步数据的解决办法
查看>>
03 SeekBar 音频播放拖拽进度条
查看>>
自定义view实现阻尼效果的加载动画
查看>>
清北学堂的小技巧和小收获
查看>>
模型压缩方向一个很牛的paper
查看>>
Android--AsyncTask异步加载详解
查看>>
YARN学习总结
查看>>
C#基础温习(2):温习控制台程序(二)
查看>>
一些文章
查看>>
注解@ResponseBody的作用
查看>>
java main函数不执行?
查看>>
iOS 更好用的打Log方式-显示文件名、行数
查看>>
从MS SQL删除大数据说开去
查看>>
NOVO SOP (SOP简介及历史)
查看>>
windows7+docker添加php扩展
查看>>
V2019 Super DSP3 Odometer Correction Vehicle List
查看>>
Python 3.X 练习集100题 05
查看>>