题目:
给定一个二叉树的根节点
root
,返回 它的 中序 遍历 。来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:输入:root = []
输出:[]
示例 3:输入:root = [1]
输出:[1]
解法:
使用栈实现。
栈或结点不都为空时循环,如果结点不为空循环,结点入栈,结点指向左结点,接着弹出栈顶,添加到结果中,然后令当前结点指向右结点。
知识点:
1.二叉树结点结构:每个节点包括值(val)、左子树(left)和右子树(right)。左、右子树都是二叉树类型,默认值为None。
2.中序遍历:左-根-右。
代码:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: result = [] stack = [] while root or stack: while root: stack.append(root) root = root.left root = stack.pop() result.append(root.val) root = root.right return result