使用js進行二叉樹結構資料與陣列結構資料的互相轉化

2021-07-22 02:34:48 字數 1234 閱讀 5473

簡單的說下本示例中的樹形資料的結構:

"type": "logic",

"content": "and",

"left": ,

"right":

即每個節點都包含type, content, left,right四個屬性,其中type, content包含該結點的資料,left和right包含該借點的左右子樹節點。而我們關心的資料始終都包含在葉子節點中。

父節點的type始終為logic,葉節點的type為leaf或者model,其中model始終有乙個右子樹節點,他的下面不會有其它節點。

這裡我們的樹結構都是左節點是子樹或者葉節點,右節點始終為葉節點,用圖來表示就是這樣:

如果有4個節點的話,那麼上圖1 的位置就會變成乙個二叉樹結構了。

上述就是這個樹形結構的說明了。

將它解析為陣列格式的話就要運用遞迴的方法了:

//宣告乙個變數用來儲存結果

var res = ;

function treetoarr(t) )

} else )

}//遞迴左子樹

treetoarr(t.left)

} else )

} else )}}

}

陣列型別轉化為樹形結構也類似,結構還是想上圖中所述,節點「向左延伸」。

function treelize(arr) 

var right = arr.slice(arr.length - 1)[0];

var tr = : right.value) : : right.value}}

result = json.stringify(tr);

return tr;

};

其中有較多的三元比較符,不要弄錯了就好。

如果我們給的陣列資料是這樣的:

var a3 = [, , ]
那麼當執行過後,樹形結構的資料就是這樣的:

,

"right":

},"right": }}

github pages:justforuse

資料結構 二叉樹結構

資料結構 二叉樹結構 定義 一棵二叉查詢樹 bst 是一棵二叉樹,其中每個結點都含有乙個comparable的鍵 以及相關聯的值 且每個結點的鍵都大於其左子樹中的任意結點的鍵而小於右子樹的任意結點的鍵。完全二叉樹 將結點按從左到右,再從上到下的順序排布,得到的二叉樹就是完全二叉樹。例如有10個結點,...

JS資料結構(9) 樹結構,二叉樹

1.什麼是樹結構 樹結構是一種非線性結構,以分層的方式儲存資料。現實中關於樹結構的例子有家譜,還有公司的組織架構等。樹結構的抽象 樹結構的優點 每種資料結構都有自己特定的應用場景,樹結合了其他資料結構 陣列,鍊錶,雜湊表 的優點。在模擬某些場景時,我們使用樹結構會更加的方便。因為樹結構是非線性的,可...

二叉樹 結構體

size large align center 二叉樹 結構體 align size 程式名稱 利用結構體建立二叉樹 written by hewei 2011 05 30 include using namespace std define max 20 定義儲存二叉樹節點的結構體 struct ...