二叉樹中序遍歷-非遞迴方法
阿新 • • 發佈:2022-05-10
給定一個二叉樹的根節點root,返回它的中序遍歷結果。
資料範圍:樹上節點數滿足 0 \le n \le 10000≤n≤1000,樹上每個節點的值滿足 0 \le val \le 10000≤val≤1000
進階:空間複雜度 O(n)O(n),時間複雜度 O(n)O(n)
進階:空間複雜度 O(n)O(n),時間複雜度 O(n)O(n)
示例1
輸入:{1,2,#,#,3}返回值:
[2,3,1]
- 遞迴方法簡單但是耗記憶體且容易超過遞迴次數,使用棧來非遞迴的實現遍歷。
# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 程式碼中的類名、方法名、引數名已經指定,請勿修改,直接返回方法規定的值即可# # # @param root TreeNode類 # @return int整型一維陣列 # class Solution: def inorderTraversal(self , root: TreeNode) -> List[int]: res = [] stack = [] while root or stack: while root: stack.append(root) root = root.left root= stack.pop() res.append(root.val) root = root.right return res
如此簡潔優雅的程式碼必須記錄下!