菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

DSA 中序遍历


二叉树的中序遍历

中序遍历是一种深度优先搜索(DFS),其中每个节点按照特定顺序访问。在此处 阅读更多关于二叉树遍历的内容

运行下面的动画,查看二叉树的中序遍历是如何完成的。

R A B C D E F G

结果

中序遍历会递归地遍历左子树,然后访问根节点,最后递归地遍历右子树。这种遍历主要用于二叉搜索树,在这种树中,它会按升序返回值。

该遍历之所以被称为“中”序,是因为节点是在递归函数调用“之间”被访问的。节点在左子树的中序遍历之后,右子树的中序遍历之前被访问。

中序遍历的代码如下所示

示例

Python

def inOrderTraversal(node):
    if node is None:
        return
    inOrderTraversal(node.left)
    print(node.data, end=", ")
    inOrderTraversal(node.right)
运行示例 »

inOrderTraversal() 函数会不断地用当前左子节点作为参数调用自身(第 4 行),直到该参数为 None,然后函数返回(第 2-3 行)。

第一次参数 nodeNone 的情况是当 C 节点的左子节点被作为参数传递时(C 没有左子节点)。

之后,节点 C 的 data 部分被打印(第 5 行),这意味着“C”是第一个被打印的内容。

然后,将节点 C 的右子节点作为参数传递(第 6 行),该参数为 None,因此函数调用在不执行任何其他操作的情况下返回。

在打印“C”之后,先前的 inOrderTraversal() 函数调用继续执行,因此“A”被打印,然后是“D”,接着是“R”,以此类推。



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持