question:
前序
这里采用非递归(栈和队列)的思想
解法:
class Solution:
def prevalue(self,root):
# 判断是否为空
if not root:
return None
# 先将根节点放到栈
self.result.append(root.val)
# 再放左节点
self.prevalue(root.left)
# 再放右节点
self.prevalue(root.right)
def preorderTraversal(self, root: TreeNode) -> List[int]:
# 建立一个栈
self.result=[ ]
# 调用函数传值
self.prevalue(root)
# 返回结果
return self.result
可能出现的问题,没有继承self
中序
解法一:
class Solution:
def prevalue(self,root):
# 判断是否为空
if not root:
return None
# 再放左节点
self.prevalue(root.left)
# 先将根节点放到栈
self.result.append(root.val)
# 再放右节点
self.prevalue(root.right)
def inorderTraversal(self, root: TreeNode) -> List[int]:
# 建立一个栈
self.result=[ ]
# 调用函数传值
self.prevalue(root)
# 返回结果
return self.result
解法二:
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
def invalue(root):
if not root:
return None
invalue(root.left)
ls.append(root.val)
invalue(root.right)
ls =[]
invalue(root)
return ls
后序可以采用上面的方法,变换一下根节点和左右节点的位置就可以了,相当于一个模板