日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 331. 验证二叉树的前序序列化

發布時間:2023/11/29 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 331. 验证二叉树的前序序列化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
序列化二叉樹的一種方法是使用前序遍歷。當我們遇到一個非空節點時,我們可以記錄下這個節點的值。如果它是一個空節點,我們可以使用一個標記值記錄,例如 #。_9_/ \3 2/ \ / \4 1 # 6 / \ / \ / \ # # # # # # 例如,上面的二叉樹可以被序列化為字符串 "9,3,4,#,#,1,#,#,2,#,6,#,#",其中 # 代表一個空節點。給定一串以逗號分隔的序列,驗證它是否是正確的二叉樹的前序序列化。編寫一個在不重構樹的條件下的可行算法。每個以逗號分隔的字符或為一個整數或為一個表示 null 指針的 '#' 。你可以認為輸入格式總是有效的,例如它永遠不會包含兩個連續的逗號,比如 "1,,3" 。示例 1:輸入: "9,3,4,#,#,1,#,#,2,#,6,#,#" 輸出: true 示例 2:輸入: "1,#" 輸出: false

解題思路

因為這題連空節點都連出來了,所以只需要統計空節點和正常節點是否能滿足前序遍歷的要求。一個正常節點必須連接兩個子節點(包括#節點),而空節點不能擁有子節點,因此存在關系 父節點(除#以外)后面必須有兩個元素(包括正常節點和#節點,#節點后面不能接子節點

代碼

class Solution {public boolean isValidSerialization(String preorder) {String[] split = preorder.split(",");int i=0,n=split.length,slot=1;while (i<n){if(slot==0) return false;//后面還有節點沒遍歷完,坑位已經被占慢了if(split[i++].equals("#"))slot--;//空節點,坑位被占掉一個,由于沒有子節點,不需要添加坑位else slot++; //坑位被占掉一個,但是因為有兩個子節點,需要多加兩個坑位,所以實際上只加了一個}return slot==0;} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的leetcode 331. 验证二叉树的前序序列化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。