python3多種方式實現後序遍歷
阿新 • • 發佈:2020-12-09
技術標籤:演算法刷題二叉樹資料結構leetcodepython演算法
此公眾號會發表計算機考研(初複試資訊)、夏令營等資料,方便考研人對資訊的獲取,節約自身查詢資料的時間,回覆408,可獲得資料結構、作業系統、計算機網路、計算機組成原理全科資料
給定一個二叉樹,返回它的 後序 遍歷。
示例:
輸入: [1,null,2,3]
1
\
2
/
3輸出: [3,2,1]
第一種
遞迴
# 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 postorderTraversal(self, root: TreeNode) -> List[int]: res=[] def postorder(root): if not root: return postorder(root.left) postorder(root.right) res.append(root.val) postorder(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 postorderTraversal(self, root: TreeNode) -> List[int]: if not root: return [] stack=[] res=[] cur=root r=None while cur or stack: while cur: stack.append(cur) cur=cur.left cur=stack[-1] if cur.right and cur.right!=r:#右子樹不為空,且沒有訪問 cur=cur.right else: stack.pop() res.append(cur.val) r=cur cur=None return res