当前位置:实例文章 » 其他实例» [文章]给你二叉树的根节点 root ,返回它节点值的中序遍历

给你二叉树的根节点 root ,返回它节点值的中序遍历

发布人:shili8 发布时间:2024-12-29 17:11 阅读次数:0

**二叉树的中序遍历**

在计算机科学中,二叉树是一种常见的数据结构,它由一系列结点组成,每个结点最多有两个子结点:左孩子和右孩子。二叉树的中序遍历是指按照从最小值到最大值的顺序访问每个结点。

**定义**

给定一个二叉树的根节点 `root`,返回它节点值的中序遍历。

**示例**

例如,我们有如下二叉树:

4 / 
25 /  
136


中序遍历结果为:`[1,2,3,4,5,6]`。

**解决方案**

我们可以使用递归或迭代的方式来实现中序遍历。下面是递归版的代码:

class TreeNode:
 def __init__(self, x):
 self.val = x self.left = None self.right = Nonedef inorderTraversal(root):
 """
 :type root: TreeNode :rtype: List[int]
 """
 res = []
 if not root:
 return res # 递归左子树 left_res = inorderTraversal(root.left)
 # 中序遍历当前结点 res.append(root.val)
 # 递归右子树 right_res = inorderTraversal(root.right)
 return left_res + res + right_res# 测试用例root = TreeNode(4)
root.left = TreeNode(2)
root.right = TreeNode(5)
root.left.left = TreeNode(1)
root.left.right = TreeNode(3)
root.right.right = TreeNode(6)

print(inorderTraversal(root)) # [1,2,3,4,5,6]


**迭代版**

我们也可以使用栈来实现中序遍历。下面是迭代版的代码:

def inorderTraversal(root):
 """
 :type root: TreeNode :rtype: List[int]
 """
 res = []
 stack = []
 while True:
 # 进入左子树 while root:
 stack.append(root)
 root = root.left # 中序遍历当前结点 if not stack:
 return res node = stack.pop()
 res.append(node.val)
 # 进入右子树 root = node.right return res# 测试用例root = TreeNode(4)
root.left = TreeNode(2)
root.right = TreeNode(5)
root.left.left = TreeNode(1)
root.left.right = TreeNode(3)
root.right.right = TreeNode(6)

print(inorderTraversal(root)) # [1,2,3,4,5,6]


**总结**

中序遍历是二叉树的一种常见操作,通过递归或迭代的方式可以实现。上述代码提供了两个版本的中序遍历函数,分别使用递归和栈来实现。

相关标签:
其他信息

其他资源

Top