首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归获取二叉树中节点的路径

递归获取二叉树中节点的路径
EN

Stack Overflow用户
提问于 2016-02-04 20:32:33
回答 1查看 1.1K关注 0票数 0

我在获取二叉树中一个节点的路径时遇到了问题。具体来说,当我从堆栈框架返回时,我不知道如何从堆栈中弹出元素。

代码语言:javascript
复制
def getPath(self, target):

    stack = []

    def _getPath(head):
        nonlocal stack
        nonlocal target

        stack.append(head)

        if head.value == target:
            return stack
        if head.left is not None:
            _getPath(head.left)
        if head.right is not None:
            _getPath(head.right)

    _getPath(self.root)

    return stack

当前,堆栈将包含树中的所有元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-04 20:54:04

这里的一个问题是:目标何时找到的信息必须传播回被调用的getPath实例。堆栈的构造是发现的一种“副作用”。因此,我建议您在getPath中返回一个布尔值,即在当前被调查的子树中找到目标的真当且仅当。然后,我们知道我们必须将一个值附加到“堆栈”:

代码语言:javascript
复制
def getPath(self, target):

    stack = []

    def _getPath(head):
        nonlocal stack
        nonlocal target
        if head.value == target:
            stack.append(head)
            return True
        for child in (head.left, head.right):
            if child is not None:
                if  _getPath(child):
                    stack.append(head)
                    return True
        return False


    _getPath(self.root)
    return reversed(stack)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35211055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档