二叉樹的順序儲存主要利用陣列來實現,在實際儲存中可能存在一定的浪費。當全部只有右子樹的時候,浪費最為嚴重。
package my.bintree;
public class arraybintree
// 預設的深度
public arraybintree()
// 指定深度
public arraybintree(int deep)
// 指定深度和根節點
public arraybintree(int deep, t data)
/*** 為指定節點新增子節點
* @param index 新增子節點的父節點的索引,由於陣列從的索引從0開始,索引在計算上有點差別
* @param data 節點資料
* @param left 是否為左節點
*/public void add(int index, t data, boolean left)
if (2 * index + 1 >= this.arraysize)
if (left) else }
public boolean empty()
@suppresswarnings("unchecked")
public t getroot()
return null; }
@suppresswarnings("unchecked")
public t getparent(int index)
return null; }
@suppresswarnings("unchecked")
public t getleft(int index)
return (t)this.datas[2*index+1]; }
@suppresswarnings("unchecked")
public t getright(int index)
return (t)this.datas[2*index+2]; }
public int deep()
//獲取指定節點的位置
public int position(t data)
}
控制台輸出:
[root, 0_left, 0_right, 1_left, 1_right, 2_left, 2_right, null, null, null, null, null, null, null, null]
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第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...