LeetCode:94. Binary Tree Inorder Traversal
Given a binary tree, return the inorder traversal of its nodes' values.
Example:
Input: [1,null,2,3]
1
\
2
/
3
Output: [1,3,2]
Follow up: Recursive solution is trivial, could you do it iteratively?
中序遍历一棵二叉树。
思路一:递归法
从根节点开始分别递归遍历某个结点左右子树,这个过程中如果这个个结点不为空,直接入队。最后这个队列里的元素顺序就是中序遍历的顺序。
# 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]:
res = []
self.helper(root,res)
return res
def helper(self, root, res):
if (root != None):
if (root.left != None):
self.helper(root.left, res)
res.append(root.val)
if (root.right != None):
self.helper(root.right, res)
思路二:迭代法
用一个辅助栈改写一下上面的递归方法。
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
res = []
stack = []
cur = root
while (cur != None or len(stack) > 0):
while(cur != None):
stack.append(cur)
cur = cur.left
cur = stack.pop()
res.append(cur.val)
cur = cur.right
return res
THE END.