二叉树节点的定义
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None
构建二叉树
def create_binary_tree(input_list=[]): if input_list is None or len(input_list) == 0: return None data = input_list.pop(0) if data is None: return None node = TreeNode(data) node.left = create_binary_tree(input_list) node.right = create_binary_tree(input_list) return node
深度优先遍历
前序遍历
def pre_order_traversal(root): if root is None: return print(root.val) pre_order_traversal(root.left) pre_order_traversal(root.right) return root
中序遍历
def in_order_traversal(root): if root is None: return in_order_traversal(root.left) print(root.val) in_order_traversal(root.right) return root
后序遍历
def post_order_traversal(root): if root is None: return post_order_traversal(root.left) post_order_traversal(root.right) print(root.val) return root
广度优先遍历
层序遍历
from queue import Queuedef level_order_traversal(root): queue = Queue() queue.put(root) while not queue.empty(): root = queue.get() print(root.val) if root.left is not None: queue.put(root.left) if root.right is not None: queue.put(root.right)