使用Python的二叉树中的左视图方法错误

问题描述 投票:0回答:1

我学习DSA很长时间了..在学习过程中,我遇到了一个概念“二叉树中的左视图方法”。我已经完全编写了我的代码脚本,但是当我尝试提供修改后的二叉树时出现错误。

我的二叉树视图

    1
   / \
  2   3
 / \  / \
4   5 6  7
       \
        8

实际的左视图是

1, 2, 4
,但我得到的不是
1, 2, 4, 8
8
还包括右视图。如果您知道如何解决问题,请发现并评论错误。对我的学习之旅会有帮助。预先感谢 🙂。 (代码如下)

# left view method
class Node:
    def __init__(self, val):
        self.left = None
        self.right = None
        self.data = val

class Leftview:
    def view(self, root):
        out = []
        maxlevel = [-1]
        self._helperrecur(root, 0, maxlevel, out)
        for i in range(len(out)):
            print(out[i], end=' ')
        

    def _helperrecur(self, root, level, maxlevel, out):

        #base condition
        if root is None:
            return
        
        #main condition
        if level > maxlevel[0]:
            out.append(root.data)
            maxlevel[0] = level

        #recursive through tree
        self._helperrecur(root.left, level+1, maxlevel, out)
        self._helperrecur(root.right, level+1, maxlevel, out)


root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
root.right.left.right = Node(8)

lf = Leftview()
lf.view(root)

我尝试了另一种方法来更改递归,

left -> right
之前,但我更改为
right -> left
来检查正确的视图。右视图绝对工作正常。

异常结果:

1, 3, 7, 8
我的输出:
1, 3, 7, 8

代码在这里,

self._helperrecur(root.right, level+1, maxlevel, out)
self._helperrecur(root.left, level+1, maxlevel, out)

我期待,右视图如何进入左视图?如果你知道请评论我,

python recursion data-structures encoding binary-tree
1个回答
0
投票

左视图在 GeeksForGeeks 上定义为“每个级别的一组最左边的节点。”

树中每一层最左边的节点是 1、2、4 和 8。8 包含在集合中,因为作为最后一层的唯一节点,根据定义它是最左边的。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.