菜单
×
   ❮   
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 后序遍历


二叉树的后序遍历

后序遍历是一种深度优先搜索(Depth First Search),其中每个节点都以特定的顺序进行访问。 在此处 阅读更多关于二叉树遍历的信息

对二叉树进行后序遍历的过程可视化如下

R A B C D E F G

结果

后序遍历通过递归地对左子树和右子树进行后序遍历,然后访问根节点来工作。 它用于删除树、表达式树的后缀表示法等。

之所以称这种遍历为“后”序,是因为访问节点是在递归调用左右子节点“之后”进行的。

后序遍历的代码看起来是这样的

示例

Python

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

postOrderTraversal() 函数将递归地继续遍历左子树(第 4 行),直到当 C 的左子节点作为 node 参数被调用时,返回 None

在 C 的左子节点返回 None 之后,第 5 行执行,C 的右子节点返回 None,然后打印字母 'C'(第 6 行)。

这意味着 C 在其左子节点和右子节点被遍历“之后”才被访问或打印,这就是为什么它被称为“后”序遍历。

postOrderTraversal() 函数继续传播回先前的递归函数调用,因此下一个要打印的节点是 'D',然后是 'A'。

该函数继续传播并打印节点,直到所有节点都被打印或访问。



×

联系销售

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

报告错误

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

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

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