(一)定义二叉树节点
1 class Node: 2 def __init__(self, data): 3 self.data = data 4 self.left = None 5 self.right = None
(二)二叉树的顺序遍历
从左到右广度遍历
1 def display(tree): 2 if tree is None: 3 return 4 if tree.left is not None: 5 display(tree.left) 6 print(tree.data) 7 if tree.right is not None: 8 display(tree.right) 9 return
(三)二叉树的深度遍历
从上到下深度遍历
1 def depth_of_tree(tree): 2 if tree is None: 3 return 0 4 else: 5 depth_l_tree = depth_of_tree(tree.left) 6 depth_r_tree = depth_of_tree(tree.right) 7 if depth_l_tree > depth_r_tree: 8 return 1 + depth_l_tree 9 else: 10 return 1 + depth_r_tree
(四)判断二叉树是否满二叉树
看是不是满二叉树,
1 def is_full_binary_tree(tree): 2 3 if tree is None: 4 return True 5 if (tree.left is None) and (tree.right is None): 6 return True 7 if (tree.left is not None) and (tree.right is not None): 8 return (is_full_binary_tree(tree.left) and is_full_binary_tree(tree.right)) 9 else: 10 return False
如果节点是空,是空的
如果左节点是空,并且右节点为空,是空的
如果左右节点不空,那么就执行左右节点的这个函数,递归下去,否则报错,那么它就是满二叉树