要知道順序儲存則必須先了解三種遍歷方式
二叉樹三種遍歷方式
順序儲存二叉樹基本針對完全二叉樹,即用乙個陣列來儲存二叉樹。
如下圖的二叉樹,下圖的二叉樹用陣列儲存是
從圖中看出幾個性質:(n是從0開始的,因為陣列的第乙個元素的下標為0)
第n個節點的左子節點為2n+1
第n個節點的右子節點為2n+2
第n個節點的父節點為(n-1)/ 2
樹分前中後序遍歷,而上面的陣列普通遍歷時是1,2,3,4,5,6,7;和前序遍歷的順序不符,所以可以根據性質1,2來寫乙個前序遍歷的方法。
寫法和普通的前序遍歷思路是一樣的,只不過換成了陣列下標遍歷。
public
static
void
preorder
(int index)
//先輸出本節點
system.out.
printf
("%d \t"
,arr[index]);
//左子節點遞迴輸出if(
(index*2+
1)< arr.length)
//右子節點遞迴輸出if(
(index*2+
1)< arr.length)
}
測試:
public
static
void
main
(string[
] args));
tree.
preorder()
;}輸出:
12453
67
process finished with exit code 0
至於後序和中序遍歷和正常的遍歷思路都大同小異,都是靠遞迴順序「左右中,左中右,中左右」的套路 順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第n個元素的左子節點為 2 n 1 第n個元素的右子節點為 2 n 2 第 n 個元素的父節點為 n 1 2 n 表示二叉樹中的第幾個元素 按 0 開始編號...
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列。陣列轉換成樹即是將陣列中的各個元素按照二叉樹的層次儲存起來的過程。原陣列 1,2,3,4,5,6,7 轉換為順序二叉樹如下圖所示 順序儲存二叉樹的特點 通常只考慮完全二叉樹 第n個元素的左子節點為2 n ...
順序儲存二叉樹
package com.datastructure.tree.binarytree 順序儲存二叉樹 1。順序儲存二叉樹通常只考慮完全二叉樹 2。第n個元素的左子節點為2 n 1 3。第n個元素的右子節點為2 n 2 4。第n個元素的父親節點為 n 1 2 public class sequentia...