1. 程式人生 > >二叉樹的各種遍歷(遞迴實現版本)

二叉樹的各種遍歷(遞迴實現版本)

  1. 先序,中序,後序遍歷

先序:先根,後左子樹,後右子樹

中序:先左子樹,後根,後右子樹

後序:先左子樹,後右子樹,後根

遞迴程式碼實現:

class TreeNode(object):
     def __init__(self, x):
         self.val = x
         self.left = None
         self.right = None
 
class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        # res1作為全域性變數傳到函式裡,在執行過程中發生變化
        res1 = []
        self. recursive_inorder (root, res1)
        print(res1)
        return res1
    def recursive_inorder(self, root, res):#遞迴遍歷
        if root:
            # 先序
            # res.append(root.val)
            self.recursive_inorder(root.left, res)
            # 中序
            # res.append(root.val)
            self.recursive_inorder(root.right, res)
            # 後序
            # res.append(root.val)
if __name__ == '__main__':
    S = Solution()
    l1 = TreeNode(1)
    l2 = TreeNode(2)
    l3 = TreeNode(3)
    l4 = TreeNode(4)
    l5 = TreeNode(5)
    l6 = TreeNode(6)
    l7 = TreeNode(7)
    root = l1
    l1.left = l2
    l1.right = l3
    l2.left = l4
    l2.right = l5
    l3.left = l6
    l3.right = l7
    x = S.inorderTraversal(root)