1. 程式人生 > 其它 >二叉樹中序遍歷-非遞迴方法

二叉樹中序遍歷-非遞迴方法

給定一個二叉樹的根節點root,返回它的中序遍歷結果。   資料範圍:樹上節點數滿足 0 \le n \le 10000n1000,樹上每個節點的值滿足 0 \le val \le 10000val1000
進階:空間複雜度 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

如此簡潔優雅的程式碼必須記錄下!