【发布时间】:2021-08-17 07:35:31
【问题描述】:
我对递归有疑问。请帮助澄清我的疑问。
我有一个存储二叉树节点的数据结构:
class Node:
def __init__(self, key, left=None, right=None):
self.data = key
self.left = left
self.right = right
# Recursive function to print left view of given binary tree
def printLeftView(root,level=0,leveldic={}):
if root==None:
return
print(root.data,leveldic)
if level not in leveldic:
leveldic[level]=root.data
print(root.data)
printLeftView(root.left,level+1,leveldic)
printLeftView(root.right,level+1,leveldic)
"""
1
/ \
2 3
/ / \
4 5 6
\
8
"""
if __name__ == '__main__':
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.right = Node(4)
root.right.left = Node(5)
root.right.right = Node(6)
root.right.left.right = Node(8)
printLeftView(root)
输出:
> 1 {}
> 1
> 2 {0: 1}
> 2
> 4 {0: 1, 1: 2}
> 4
> 3 {0: 1, 1: 2, 2: 4}
> 5 {0: 1, 1: 2, 2: 4}
> 8 {0: 1, 1: 2, 2: 4}
> 8
> 6 {0: 1, 1: 2, 2: 4, 3: 8}
怀疑:
为什么字典返回后不回到原来的状态?
即,在 print 4 之后的字典是
{0:1、1:2、2:4}
由于它返回并且返回节点3时,它应该返回到之前的状态,同时返回成为
{0:1, 1:3}
这没有发生,字典没有得到更改,它与节点 4 中的相同。
{0:1、1:2、2:4}
可能是什么原因?
【问题讨论】:
标签: python recursion tree binary-tree