本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

在二叉搜索树中查找 2 个节点的路径

发布于2021-09-27 03:15     阅读(111)     评论(0)     点赞(21)     收藏(2)



我有这个代码应该找到2个节点之间的路径。问题是,如果节点 2 大于节点 1,则无法区分它是父节点还是右子节点,我现在要如何纠正这个问题。我想也许交换 element2 和 1 会起作用,但这只会使顺序出错。

def _find_path(self, element_1, element_2, nature):

    if element_1 !=None and element_2 != None:
        if element_1.key == element_2.key:
            self.list_path.append(element_1)
        else:
            if(element_1.key == self.root.key or element_2.key == self.root.key):
                if(element_2.key > element_1.key):
                    self.list_path.append(element_1)
                    self._find_path(element_1.rightChild, element_2, nature)
                if (element_2.key < element_1.key):
                    self.list_path.append(element_1)
                    self._find_path(element_1.leftChild, element_2, nature)
            else:
                    if(element_1.key < self.root.key and element_2.key < self.root.key or element_1.key > self.root.key and element_2.key > self.root.key):
                        if element_2.key > element_1.key:
                            self.list_path.append(element_1)
                            self._find_path(element_1.parent, element_2, nature)
                        if element_2.key < element_1.key:
                            self.list_path.append(element_1)
                            self._find_path(element_1.leftChild, element_2, nature)
                        else:
                            if element_1.key == element_2.key:
                               return [element_1]
                            res = self._find_path(element_1.leftChild, element_2,nature)
                            if res:
                                self.steps += 1
                                return [element_1] + res
                            res = self._find_path(element_1.rightChild, element_2,nature)
                            if res:
                                self.steps += 1
                                return [element_1] + res
                    else:
                        if(element_1.key < self.root.key and element_2.key > self.root.key):
                            self.list_path.append(element_1)
                            self._find_path(element_1.parent, element_2, nature)
                        else:
                            self.list_path.append(element_1)
                            self._find_path(element_1.parent, element_2, nature)
    return self.list_path

解决方案


暂无回答







所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1046345/ab455aabe4ce2f57440f/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)