Leetcode只二叉树中序遍历(python解法)
1.题目描述示例 1输入root [1,null,2,3]输出[1,3,2]示例 2输入root []输出[]示例 3输入root [1]输出[1]2.解决方法:中序遍历就是先遍历左子树然后遍历右子树可以使用栈将左子树所有的根节点的val记录下来然后在从底部网上遍历这才是正确的书顺序此时就可以加上左树和根此时遍历右子树即可栈方法# Definition for a binary tree node.# class TreeNode:# def __init__(self, val0, leftNone, rightNone):# self.val val# self.left left# self.right rightclass Solution:def inorderTraversal(self, root: Optional[TreeNode]) - List[int]:result [] # 存放最终遍历结果stack [] # 显式栈模拟递归调用栈current root # 当前正在处理的节点从根开始# 只要栈不为空或者当前节点不为空就继续循环while stack or current:# 一路向左把路径上所有节点压入栈while current:stack.append(current)current current.left# 此时 current 为 None说明已到达最左叶子的左孩子空# 弹出栈顶 —— 这就是当前子树中“最左但未访问”的节点即该子树的根current stack.pop()result.append(current.val) # 访问它加入结果# 转向它的右子树可能为空也可能有内容current current.rightreturn result递归方法def inorderTraversal(root):if not root: # 基础情况return []left_list inorderTraversal(root.left) # 递归处理左子树right_list inorderTraversal(root.right) # 递归处理右子树return left_list [root.val] right_list
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2497824.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!