1. 程式人生 > 其它 >python3多種方式實現中序遍歷

python3多種方式實現中序遍歷

技術標籤:演算法刷題二叉樹資料結構leetcodepython演算法

考研人資訊庫

此公眾號會發表計算機考研(初複試資訊)、夏令營等資料,方便考研人對資訊的獲取,節約自身查詢資料的時間,回覆408,可獲得資料結構、作業系統、計算機網路、計算機組成原理全科資料

給你二叉樹的根節點 root ,返回它節點值的前序遍歷。

示例 1:

輸入:root = [1,null,2,3]
輸出:[1,3,2]

第一種

遞迴

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        res=[]
        def inorder(root):
            if not root:
                return
            inorder(root.left)
            res.append(root.val)
            inorder(root.right)
        inorder(root)
        return res    

第二種

使用棧

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        #非遞迴
        if not root:
            return []
        stack=[]
        res=[]
        cur=root
        while cur or stack:
            while cur:
                stack.append(cur)          
                cur=cur.left
            cur=stack.pop()
            res.append(cur.val)
            cur=cur.right
        return res