判断BST:
- 递归
- 中序遍历是否升序
判断完全二叉树:
层次遍历,遇到第一个空节点之后,后面应该全是空节点,否则为True
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
#
# @param root TreeNode类 the root
# @return bool布尔型一维数组
#
class Solution:
def judgeIt(self , root ):
# write code here
def isBST(root, lo, hi):
if not root:
return True
if root.val <= lo or root.val >= hi:
return False
return isBST(root.left, lo, root.val) and isBST(root.right, root.val, hi)
from collections import deque
def isPerfect(root):
if not root:
return True
q = deque([root])
temp = []
while q:
length = len(q)
for i in range(length):
curr = q.popleft()
temp.append(curr)
if curr:
q.append(curr.left)
q.append(curr.right)
flag = 0
for node in temp:
if not node:
flag = 1
if flag == 1 and node:
return False
return True
return [isBST(root, float('-inf'), float('inf')), isPerfect(root)]


京公网安备 11010502036488号