class TreeNode:
def __init__(self,val=0,left=None,right=None):
self.val = val
self.right = right
self.left = left```
```python
# pythonic 无敌解法
## 前序
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
stack, res = [root], []
while stack:
i = stack.pop()
if isinstance(i, TreeNode):
stack.extend([i.right, i.left, i.val])
elif isinstance(i, int):
res.append(i)
return res
## 中序
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
stack, res = [root], []
while stack:
i = stack.pop()
if isinstance(i, TreeNode):
stack.extend([i.right, i.val, i.left])
elif isinstance(i, int):
res.append(i)
return res
## 后序
class Solution:
def postorderTraversal(self, root: TreeNode) -> List[int]:
stack, res = [root], []
while stack:
i = stack.pop()
if isinstance(i, TreeNode):
stack.extend([i.val, i.right, i.left])
elif isinstance(i, int):
res.append(i)
return res```
【二叉树的前序、中序、后序遍历的python写法】借助栈的实现,效率媲美递归~
最新推荐文章于 2021-07-29 16:31:55 发布