繁体   English   中英

二叉树遍历 - 预购 - 访问父节点

[英]Binary Tree Traversal - Preorder - visit to parent

我正在尝试了解前序遍历的递归实现,如此链接http://interactivepython.org/runestone/static/pythonds/Trees/TreeTraversals.html 中所示

def preorder(tree): 
    if tree:  
        print(tree.getRootVal())  
        preorder(tree.getLefChild())  
        preorder(tree.getRightChild())   

我了解预购是如何工作的,但是让我感到困惑的是上面显示的递归实现。 我仍然无法弄清楚在遍历所有左孩子之后算法如何回到最近的祖先(父母)。 我试过在纸上解决这个问题,但它仍然没有点击。

preorder(tree.getLefChild())当前树的所有左孩子。 然后该方法返回,就像所有其他方法一样,然后继续使用父级的右子级。

快速可视化

def preorder(tree): 
    if tree:  
        print(tree.getRootVal())  
        preorder(tree.getLefChild())  # Expand this
        preorder(tree.getRightChild())  

变成...

def preorder(tree): 
    if tree:  
        print(tree.getRootVal())  
        # Entering recursion ... 
        if (tree.getLefChild()):
            print(tree.getLefChild().getRootVal())  
            preorder(tree.getLefChild().getLefChild())  # And so on...            
            preorder(tree.getLefChild().getRightChild())  
        # Exiting recursion...
        preorder(tree.getRightChild())  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM