博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断整数序列是不是二元查找树的后序遍历结果
阅读量:6253 次
发布时间:2019-06-22

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

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。

如果是返回true,否则返回false。

例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:

8

/ \

6 10

/ \ / \

5 7 9 11

因此返回true。

如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。

  

思路:后序遍历结果数组的最后一个元素为根节点。

根节点的左子树全部小于根节点

根节点的右子树全部大于根节点

递归遍历左右子树是否二叉树

1 bool IsSearchBinaryTree( int a[ ], int n )  // a 为序列,n 为序列个数 2 { 3     if ( n == 0 ) 4         return true; 5     if ( n < 3 ) 6         return false; 7     if ( n == 3 ) 8     { 9         if ( a[ 0 ] < a[ 2 ] && a[ 1 ] > a[ 2 ] )10             return true;11         else12             return false;13     }14 15     for ( int i = 0; i < n-1; i++ )    // i 在这里是下标,主意当if条件不满足跳出时,i 是个数16         if ( a[ i ] > a[ n-1 ] )17             break;18     19     return ( IsSearchBinaryTree( a, i ) && IsSearchBinaryTree( a + i, n-i-1 )  );   // i 是左子树的元素个数,n-i-1是右子树的元素个数20 }

转载于:https://www.cnblogs.com/kevinGaoblog/archive/2012/04/06/2434784.html

你可能感兴趣的文章
[杂记]如何在LaTeX里插入高亮代码
查看>>
「常微分方程」(阿諾爾德) Page 6 問題4 經過擴張相空間的每一點有且僅有一條積分曲線...
查看>>
同一个闭区间上有界变差函数的和与积都是有界变差函数
查看>>
java安全证书配置
查看>>
使用erlang 建立一个自动化的灌溉系统(1)准备工作
查看>>
python 调用aiohttp
查看>>
mysql 案例~ mysql故障恢复
查看>>
Spring Boot中使用MyBatis注解配置详解
查看>>
MatLab实现FFT与功率谱
查看>>
答《漫话ID》中的疑问:UniqueID和ClientID的来源
查看>>
【转】Asp.net控件开发学习笔记整理篇 - 服务器控件生命周期
查看>>
Linux下的shell编程(一)BY 四喜三顺
查看>>
javascript一些小技巧
查看>>
I00024 出钱买羽
查看>>
linux下文件的一些文件颜色的含义
查看>>
websotrm注册码
查看>>
迭代器(Iterable)和for..in..的三种协议
查看>>
判断浏览器是否为顶层窗口
查看>>
数据结构化与保存
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>