package com.datastructure.tree.binarytree;
/** * 順序儲存二叉樹
* * 1。順序儲存二叉樹通常只考慮完全二叉樹
* 2。第n個元素的左子節點為2*n+1
* 3。第n個元素的右子節點為2*n+2
* 4。第n個元素的父親節點為(n-1)/2
*/public class sequentialstoragebinarytree ;
arrbinarytree arrbinarytree = new arrbinarytree(arr);
system.out.println("前序遍歷");
arrbinarytree.preorder();
system.out.println("中序遍歷");
arrbinarytree.middleorder();
system.out.println("後序遍歷");
arrbinarytree.lastorder();
}}class arrbinarytree
//為了是有方便,過載方法preorder
public void preorder()
//為了是有方便,middleorder
public void middleorder()
//為了是有方便,過載方法preorder
public void lastorder()
//順序儲存二叉樹前序遍歷,根左右
public void preorder(int rootnode)
//遞迴遍歷右子樹
if ((2*rootnode+2)<=arr.length-1)
}//順序儲存二叉樹中序遍歷 左根右
public void middleorder(int rootnode)
//輸出根
system.out.println(arr[rootnode]);
//遞迴遍歷右子樹
if ((2*rootnode+2)<=arr.length-1)
}//順序儲存二叉樹後序遍歷 左右根
public void lastorder(int rootnode)
//遞迴遍歷右子樹
if ((2*rootnode+2)<=arr.length-1)
//輸出根
system.out.println(arr[rootnode]);
}}
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第n個元素的左子節點為 2 n 1 第n個元素的右子節點為 2 n 2 第 n 個元素的父節點為 n 1 2 n 表示二叉樹中的第幾個元素 按 0 開始編號...
順序儲存二叉樹
從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列。陣列轉換成樹即是將陣列中的各個元素按照二叉樹的層次儲存起來的過程。原陣列 1,2,3,4,5,6,7 轉換為順序二叉樹如下圖所示 順序儲存二叉樹的特點 通常只考慮完全二叉樹 第n個元素的左子節點為2 n ...
順序儲存二叉樹
一 需求 二 分析 三 實現 a 以陣列的形式來存放二叉樹的結點 b 遍歷陣列時,完成對結點的前序遍歷,中序遍歷和後序遍歷 a 給定陣列,n表示陣列的下標 b 想象一棵樹,將樹按照層序遍歷編碼,一一對應陣列下標 c 那麼若樹的結點編碼為n,則其左孩子編碼為2 n 1,右孩子為2 n 2,其父結點為 ...