给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
递归(recursion):递归常被用来描述以自相似方法重复事物的过程,在数学和计算机科学中,指的是在函数定义中使用函数自身的方法。(A调用A)
迭代(iteration):重复反馈过程的活动,每一次迭代的结果会作为下一次迭代的初始值。(A重复调用B)
作者:在彼处
链接:https://www.jianshu.com/p/32bcc45efd32
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
lst = []
if root:
lst+=self.inorderTraversal(root.left)
lst.append(root.val)
lst+=self.inorderTraversal(root.right)
return lst
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
#递归
# if not root:return []
# return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)
#队栈实现
res,stack = [],[]
while root or stack:
while root:
stack.append(root)
root = root.left
#当前结点不存在,则出栈栈顶元素
if stack:
t = stack.pop()
res.append(t.val)
#当前指针指向栈顶元素的右子树
root = t.right
return res