【发布时间】:2021-09-12 05:07:18
【问题描述】:
我正在尝试解决 geeksforgeeks.com 上的 top view of the binary tree 问题
下面给出的是二叉树。任务是打印二叉树的顶视图。二叉树的顶视图是从顶部查看树时可见的节点集。对于下面给出的树
1 / \ 2 3 / \ / \ 4 5 6 7顶视图将为:4 2 1 3 7
注意:将节点从leftmost节点返回到rightmost节点。
谁能告诉我我的代码哪里出错了?它适用于我尝试过的大多数案例,而对于一个太长而无法试运行的案例则失败了。
class Solution:
#Function to return a list of nodes visible from the top view
#from left to right in Binary Tree.
def topView(self,root):
left_ans = []
def left_view(root,level) :
if not root : return
if level > len(left_ans) : left_ans.append(root.data)
left_view(root.left,level+1)
left_view(root.right,level-1)
right_ans = []
def right_view(root,level) :
if not root: return
if level > len(right_ans) : right_ans.append(root.data)
right_view(root.right,level+1)
right_view(root.left,level-1)
left_view(root,level = 1)
right_view(root,level =1)
return left_ans[::-1]+right_ans[1:]
失败的树:
__________________23______________________
/ \
__17__ _________________65__________________
/ \ / \
__9__ 19 ______38_______ __69__
/ \ / \ / \ / \
7 10 18 21 37 __________43__________ 67 74
/ \ \ / \ / / \ / \ /
1 8 14 20 22 33 39 _______53_______ 66 68 70
\ / \ / / \ / \ \
4 13 16 __29_ 35 40 51 _62_ 71
/ \ / / / \ / \ \ / \ / \ \
3 5 11 15 27 32 34 36 41 45 52 __58__ 63 72
/ \ \ / \ / \ / \ / \ \ \
2 6 12 24 28 30 42 44 47 57 61 64 73
\ \ / \ / /
26 31 46 49 55 60
/ / \ / \ /
25 48 50 54 56 59
预期输出:
2 1 7 9 17 23 65 69 74 63 64
我的代码输出(错误):
2 1 7 9 17 23 65 69 74 72 73
【问题讨论】:
标签: python-3.x tree binary-tree