我学习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)
我期待,右视图如何进入左视图?如果你知道请评论我,
左视图在 GeeksForGeeks 上定义为“每个级别的一组最左边的节点。”
树中每一层最左边的节点是 1、2、4 和 8。8 包含在集合中,因为作为最后一层的唯一节点,根据定义它是最左边的。