数据结构之二叉树的遍历
使用python写的二叉树的层序建立和四种遍历方式
# -*- coding: utf-8 -*- class Point(object): """二叉树的结点""" def __init__(self, val): self.val = val self.left = None self.right = None def build_tree(alist): """层序建立二叉树""" if alist: root = Point(alist.pop(0)) queue = [root] while queue: temp = queue.pop(0) if alist: temp1 = Point(alist.pop(0)) temp.left = temp1 queue.append(temp1) if alist: temp2 = Point(alist.pop(0)) temp.right = temp2 queue.append(temp2) return root else: print("空树") return def pre_traverse(root): """前序遍历""" if root: print(root.val, end=" ") pre_traverse(root.left) pre_traverse(root.right) def mid_traverse(root): """中序遍历""" if root: pre_traverse(root.left) print(root.val, end=" ") pre_traverse(root.right) def post_traverse(root): """后序遍历""" if root: pre_traverse(root.left) pre_traverse(root.right) print(root.val, end=" ") def seq_traverse(root): """层序遍历""" if root: queue = [root] while queue: temp = queue.pop(0) if temp: print(temp.val, end=" ") queue.append(temp.left) queue.append(temp.right) else: print("空树") if __name__ == '__main__': root = build_tree([1,2,3,4,5,6,7]) print("层序建立二叉树:") pre_traverse(root) print("\n前序遍历二叉树:") mid_traverse(root) print("\n中序遍历二叉树:") post_traverse(root) print("\n层序遍历二叉树:") seq_traverse(root)

浙公网安备 33010602011771号