class Solution:
def isValidSerialization(self, preorder: str) -> bool:
#叶子的节点书总是比非叶子节点数多一
degree = 1
for node in preorder.split(','):
if degree==0:
return False
#如果是#入度是1,出度是0,当前度为-1
if node=='#':
degree-=1
#如果是数字,入度是1,出度是2,因此当前的度为1
else:
degree+=1
#如果出度和入度相等,那就是一棵二叉树
return degree==0
- トピック分析
- この問題を解決するには、次数の概念を使用します。二分木である場合、次数と次数は同じである必要があります。
- 数値の場合、次数は1、次数は2です。
- #の場合、次数は1、次数は0です。
- 最終次数が0の場合、それは二分木であることを意味します
- 木の基礎知識
- ツリーの次数=ツリーの次数=ツリー内のノードの数-1
- リーフノードの数= 2次数に1を加えたノードの数