二叉樹的順序儲存結構是把二叉樹的所有節點按照一定的次序順序儲存到一組包含n個儲存單元的空間中。在二叉樹的順序儲存結構中只儲存節點的值,不儲存節點之間的
邏輯關係,節點之間的邏輯關係由陣列下標的順序來體現。
二叉樹的順序儲存原則是:不管給定的二叉樹是不是完全二叉樹,都看做完全二叉樹。即按完全二叉樹的層次次序把各個節點依次存入陣列中。
如圖所示二叉樹存放在陣列中就是
二叉樹的順序儲存結構是把二叉樹的所有節點按照一定的次序順序儲存到一組包含n個儲存單元的空間中。在二叉樹的順序儲存結構中只儲存節點的值,不儲存節點之間的
邏輯關係,節點之間的邏輯關係由陣列下標的順序來體現。
二叉樹的順序儲存原則是:不管給定的二叉樹是不是完全二叉樹,都看做完全二叉樹。即按完全二叉樹的層次次序把各個節點依次存入陣列中。
如圖所示二叉樹存放在陣列中就是
/** * 新增
* @param t 元素
* @param parent 父索引
* @param isleft 是否為左子樹
*/public void add(t t,int parent,boolean isleft)
if(t==null)
if(isleft)
datas[parent*2+1]=t;
} else
datas[(parent+1)*2]=t;
} size++;
}//檢查角標越界
private void checkindex(int index)
} // 判斷二叉樹是否為空
public boolean isempty()
// 獲取根節點
public t getroot()
// 返回指定節點的父節點
public t getparent(int index)
return (t) datas[(index - 1) / 2];
}
//獲取右子節點
public t getright(int index)
//獲取左子節點
public t getleft(int index)
//返回該二叉樹的深度
public int getdeep()
//總共有多少個結點
public int size()
//返回指定資料的位置
public int indexof(t data) else }}
return -1;
}
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第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...