python3多種方式實現中序遍歷
阿新 • • 發佈:2020-12-09
技術標籤:演算法刷題二叉樹資料結構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