摘要:題目描述請實現兩個函數,分別用來序列化和反序列化二叉樹分析可以使用前序遍歷的方法來得到二叉樹的序列,然后再每個節點之間得使用一個來隔開,這樣可以避免節點值之間的歧義對于空節點也需要存儲下來,所以使用來存儲。反序列化就解析序列化字符串即可。
題目描述
請實現兩個函數,分別用來序列化和反序列化二叉樹
分析可以使用前序遍歷的方法來得到二叉樹的序列,然后再每個節點之間得使用一個" ! "來隔開,這樣可以避免節點值之間的歧義;對于空節點也需要存儲下來,所以使用" # "來存儲。
反序列化就解析序列化字符串即可。
function TreeNode(x) { this.val = x; this.left = null; this.right = null; } function Serialize(r) { if(r === null) return "#!"; var res = ""; var s = []; s.push(r); while(s.length !== 0){ var cur = s.pop(); res += (cur === null) ? "#" : cur.val; res += "!"; if(cur !== null) { s.push(cur.right); s.push(cur.left); } } return res; } function Deserialize(s) { if(s === "") return null; var arr = s.split("!"); return step(arr); } function step(arr) { var cur = arr.shift(); if(cur === "#") return null; var node = new TreeNode(cur); node.left = step(arr); node.right = step(arr); return node; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96209.html
摘要:題目描述輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。那么對于二叉搜索樹的后序遍歷的序列來說,最后一個元素即是它的根節點,序列的前某部分元素全部小于最后一個元素,序列的后某部分元素全大于最后一個元素。 題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 分析 所謂二叉搜索...
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。 分析 前序遍歷是中左右的順序,中序遍歷是左中右的順序,那么對于{1,2,4,7,3,5,6,8}和{4,7,2,1,5,3,8,6}來說,1是根節點,然...
摘要:節點類二叉樹類實現了二叉樹插入刪除查找前序遍歷中序遍歷后序遍歷層序遍歷二叉樹序列化和反序列化二叉樹的常見操作增加刪除查找先序中序后序層序遍歷序列化二叉樹先序層序序列化和反序列化先序反序列化層序序列化層序反序列化數據測試建立一棵二叉樹參考資料 節點類 public class Node { public Node left; public Node...
閱讀 3738·2021-09-09 09:33
閱讀 3024·2019-08-30 15:56
閱讀 3017·2019-08-30 15:56
閱讀 3307·2019-08-30 15:55
閱讀 499·2019-08-30 15:53
閱讀 2179·2019-08-30 15:52
閱讀 662·2019-08-28 18:16
閱讀 2391·2019-08-26 13:51