在学二叉树递归遍历的时候 return left_item + result + right_item 这行有点不明白 这玩意的运行原理是啥?为啥改变三个变量的顺序 最后得到的列表的结果顺序也会改变
这一段是节点类
class Node(object):
def __init__(self, item):
self.item = item # 表示对应的元素
self.left = None # 表示左子节点
self.right = None # 表示右子节点
这一段是遍历二叉树的函数
def inorder(self,node): # 中序遍历
if node is None:
return []
result = [node.item]
left_item = self.inorder(node.left)
right_item = self.inorder(node.right)
return left_item + result + right_item
这是二叉树的中序遍历啊,先访问左子树(left_item),然后是根(node.item),最后访问右子树(right_item),然后如果左右子树也有子树的话,也是按照这样的遍历顺序。
二叉树递归遍历
它原来是left_item + result + right_item,先访问左边,然后是根,在右边。
你把顺序改了,得到的就不是先访问左边,然后是根,在右边的元素了呀,就改成了你更改后后顺序。
2
1 3
先前是123
你改顺序了,比如说right_item + result + left_item:不就是321了嘛
>>> l = [1,2]
>>> r = [3,4]
>>> l + r
[1, 2, 3, 4]
这三个是列表,一个个拼接起来,看看leetcode或者其他图解的,比较好理解