问题描述
我对日期结构有点陌生。
在一些 Leetcode 问题中,给出的输入是 root = [1,2,3,4,5,null,6,7,null] 并且根的类型是 TreeNode,它似乎是一个单节点,如下所示
class TreeNode:
def __init__(self,val=0,left=None,right=None):
self.val = val
self.left = left
self.right = right
但是这里的输入显然是一个“列表”:root = [1,null]
当我创建一个递归函数并且它以根作为输入并可能返回一个整数时,它是否会自动开始处理这棵树中的第一个元素,即使这里的根是一棵元素的“树”?在我看来,许多这样的函数调用 root 并将其用作单个变量(或节点)而不是整个树,这有时让我感到困惑。例如
def afunction(self,root: TreeNode) -> int:
queu = [root]
maxDepth = float('-inf')
result = 0
.....
这里的根似乎是一个实际上不包含值的节点?以及如何将其存储为 queu = [root]?
解决方法
该列表可能表示一棵树,其中索引 i
处的节点在索引 2*i + 1
和 2*i + 2
处有两个子节点。你给定的列表然后代表树
1
(i=0)
/ \
2 3
(i=1) (i=2)
/ \ \
4 5 6
(i=3) (i=4) (i=6)
/
7
(i=7)
在这种解释下,根和以根节点为根的树之间几乎没有区别。但是请注意,子树不是树的单个切片,并且在单个根节点下连接两棵树并不对应于简单的列表连接。