摘要:參考自對稱的二叉樹公眾號秘密花園如下二叉樹按照前序遍歷序列化出來的結果為反序列化按規定的字符串輸出二叉樹思路如果二叉樹是一顆完全二叉樹只需知道前序遍歷即可重建在序列化二叉樹時可以將空節點使用特殊符號存儲起來這個就可以模擬一顆完全二叉樹的前序
參考自ConardLi: 《對稱的二叉樹》 公眾號: code秘密花園
如下二叉樹:
8 / 6 6 / / 5 7 7 5
按照前序遍歷序列化出來的結果為: 8,6,5,#,#,7,#,#,6,7,#,#,5,#,#
反序列化:按規定的字符串輸出二叉樹
思路:
1.如果二叉樹是一顆完全二叉樹,只需知道前序遍歷即可重建
2.在序列化二叉樹時,可以將空節點使用特殊符號存儲起來,這個就可以模擬一顆完全二叉樹的前序遍歷
3.在重建二叉樹時,當遇到特殊符號當空節點進行處理
步驟1:模擬一個二叉樹
const symmetricalTree = { val: 8, left: { val: 6, left: { val: 5, left: null, right: null }, right: { val: 7, left: null, right: null } }, right: { val: 6, left: { val: 7, left: null, right: null }, right: { val: 5, left: null, right: null } } }
步驟2:
//序列化 function Serialize(pRoot, arr = []) { if (!pRoot) { arr.push("#"); } else { arr.push(pRoot.val); Serialize(pRoot.left, arr); Serialize(pRoot.right, arr); } return arr.join(","); }
步驟3:
//反序列化 function Deserialize(str) { if (!str) { return null; } return deserialize(str.split(",")); } function deserialize (arr) { let node = null; const current = arr.shift(); if (current !== "#") { node = { val: current }; node.left = deserialize(arr); node.right = deserialize(arr); } return node; }
輸出
console.log(Serialize(symmetricalTree)); console.log(Deserialize("8,6,5,#,#,7,#,#,6,7,#,#,5,#,#"));
結果如下:
8,6,5,#,#,7,#,#,6,7,#,#,5,#,# { val: "8", left: { val: "6", left: { val: "5", left: null, right: null }, right: { val: "7", left: null, right: null } }, right: { val: "6", left: { val: "7", left: null, right: null }, right: { val: "5", left: null, right: null } } }
參考自ConardLi: 《對稱的二叉樹》 公眾號: code秘密花園
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104979.html
摘要:另外,由于篇幅有限,本篇的重點在于二叉樹的常見算法以及實現。常見的二叉樹實現代碼之前寫過相關的文章,是關于如何創建及遍歷二叉樹的,這里不再贅述。同時我們注意到,在二叉樹深度比較大的時候,我們光是比較左右是不夠的。 本篇為復習過程中遇到過的總結,同時也給準備面試的同學一份參考。另外,由于篇幅有限,本篇的重點在于二叉樹的常見算法以及實現。 常見的二叉樹實現代碼 之前寫過相關的文章,是關于如...
摘要:推導前序序列已知二叉樹的中序序列是,后序序列是,求前序序列。二叉樹的中序序列是按照左子樹,根,右子樹的順序排列的,根將左子樹的序列和右子樹的序列分割在左右兩邊。 推導前序序列 已知二叉樹的中序序列是ABCDEFG,后序序列是BDCAFGE,求前序序列。 思路 showImg(https://segmentfault.com/img/bVW1es?w=723&h=431); 二叉樹的后序...
摘要:因此,根據題目給出的先序遍歷和中序遍歷,可以畫出二叉樹選參考數據結構與算法描述實現二叉樹算法淺談數據結構二叉樹慕課網實現二叉樹算法前端樹控件騰訊軟件開發面試題 內容銜接上一章 數據結構與算法:常見排序算法 內容提要 什么是樹 - 為什么使用樹 二叉樹 二叉查找樹 紅黑樹 B、B+樹 堆 伸展樹 樹 可以點擊鏈接感受下筆者用d3.js畫的tree https://codepen...
閱讀 3197·2021-11-08 13:18
閱讀 1353·2021-10-09 09:57
閱讀 1182·2021-09-22 15:33
閱讀 3960·2021-08-17 10:12
閱讀 5053·2021-08-16 11:02
閱讀 2676·2019-08-30 10:56
閱讀 962·2019-08-29 18:31
閱讀 3251·2019-08-29 16:30