3月-331。バイナリツリーの事前注文のシリアル化を確認します

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を加えたノードの数

おすすめ

転載: blog.csdn.net/weixin_37724529/article/details/114685959