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


二叉树的后序遍历

后序遍历是一种深度优先搜索,其中每个节点以特定顺序访问。 阅读有关二叉树遍历的更多信息 这里.

对二叉树进行后序遍历可以这样可视化

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'。

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



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.