赞
踩
- # coding=utf-8
-
- """
- question:
- 有一个整数类型的列表,判断该列表是否为对应二叉搜索(查找)树1的后序遍历结果
- 搜索二叉树的父节点值大于其左子树的所有值,小于其右子树的所有值
- """
-
-
- def judge(nums):
- if not nums:
- return False
- elif len(nums) == 1: # 递归出口
- return True
-
- root = nums[-1] # 根节点的值
-
- pos = 0 # 根节点的位置
- for item in nums: # 找根节点位置
- if item > root:
- break
- pos += 1
-
- for item in nums[pos:]: # 剩下的都得比 root 大
- if item < root:
- return False
-
- if pos == 0 or pos == len(nums): # 只有左子树或右子树
- return judge(nums[:-1])
- else: # 既有左子树也有右子树
- return judge(nums[0:pos]) and judge(nums[pos:-1])
-
-
- if __name__ == '__main__':
- l = [1, 4, 7, 6, 3, 13, 14, 10, 8]
- print(judge(l))

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。