LeetCode94 二叉樹的中序遍歷

2022-09-12 06:45:12 字數 1375 閱讀 6126

方法一:遞迴,需了解樹的遞迴序遍歷

1

#definition for a binary tree node.2#

class treenode:3#

def __init__(self, val=0, left=none, right=none):4#

self.val = val5#

self.left = left6#

self.right = right

7class

solution:

8def inordertr**ersal(self, root: optional[treenode]) ->list[int]:

9def

inorder(root: treenode):

10if

notroot:

11return

12inorder(root.left)

1314

inorder(root.right)

15 res =list()

16inorder(root)

17return res

方法二:採用棧輔助

1

#definition for a binary tree node.2#

class treenode:3#

def __init__(self, val=0, left=none, right=none):4#

self.val = val5#

self.left = left6#

self.right = right

7from collections import

deque

8class

solution:

9def inordertr**ersal(self, root: optional[treenode]) ->list[int]:10#

每棵子樹的整棵樹左邊界進棧,依次彈出的過程列印記錄,對彈出節點的右樹重複以上操作

11 res =list()

12if

root:

13 stack =deque()

14while stack or

root:

15if

root:16#

左邊界進棧

1718 root =root.left

19else

:20 root =stack.pop()

2122 root =root.right

23return res

LeetCode 94 中序遍歷二叉樹

傳送門 給定乙個二叉樹,返回其中序遍歷。例如 給定二叉樹 1,null,2,3 1 2 3返回 1,3,2 說明 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?題中說明了要求使用迭代法 使用乙個棧來儲存二叉樹節點,根據中序遍歷的規則,我們可以推算出這樣的規律 1.將當前非空節點入棧 2.如果左子節點...

LeetCode94 二叉樹中序遍歷

題目描述 給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 c 實現 遞迴實現 definition for a binary tree node.struct treenode class solution void helper treenode ...

LeetCode 94 二叉樹的中序遍歷

給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?遞迴解法,先從根節點的左孩子中序遍歷,再訪問根節點,最後從根節點的右孩子中序遍歷。遞迴基是當節點為空時,返回。definition for a bin...