二叉树的前中后序遍历
1、递归版本
def inorderTraversal(self, root: TreeNode) -> List[int]:
res=[]
if not root:
return res
self.helper(root,res)
return res
def helper(self,root,res):
if root:
if root.left:
self.helper(root.left,res)
res.append(root.val)
if root.right:
self.helper(root.right,res)
2、非递归模板
def preorderTraversal(self, root: TreeNode) -> List[int]:
res=[]
if not root:
return res
stack=[[root,False]]
while stack:
node=stack.pop(-1)
if node[1]==True:
res.append(node[0].val)
else:
if node[0].right:
stack.append([node[0].right,False])
if node[0].left:
stack.append([node[0].left,False])
stack.append([node[0],True])
return res