您的位置:首页 > 其它

NO_9判断整数序列是不是二元查找树的后序遍历结果

2014-05-24 15:55 225 查看
题目博客:

http://blog.csdn.net/v_JULY_v/article/details/6057286

题目:

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

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

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

8

/ /

6 10

/ / / /

5 7 9 11

因此返回true。

如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
代码为:
#coding=utf-8
class TreeNode:
def __init__(self,value,leftChild=None,rightChild=None):
self.value=value
self.leftChild,self.rightChild=leftChild,rightChild
def IsCanTree(*inlist):
if not inlist:#列表非空
return True
root=inlist[-1]#最后一个肯定为根节点
leftChildlist=[]#左孩子节点比根节点小
gt_index=0
for index,value in enumerate(inlist):
if value>=root:
gt_index=index
break
else:
leftChildlist.append(value)
right_child_list=inlist[gt_index:-1]
flag=True
for  gtvalue in  right_child_list:#如果在右孩子节点找到比根节点小的节点。就说明不是前序遍历
if gtvalue<root:
flag=False
break
if flag:
if False in (IsCanTree(*leftChildlist),IsCanTree(*right_child_list)):#判断右孩子节点集,右孩子节点集符不符合前序遍历序列
flag=False
return flag
print IsCanTree(*[7,4,6,5])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐