二叉樹的基本資料結構
使用陣列構造二叉樹
迭代方式實現先序 中序遍歷
水平遍歷
class btree
else
}public function setleft($bt2)
public function setright($bt2)
public function setkey($key)
function pretra()
function ortra()
function potra()
}
2 給乙個陣列,要求建立二叉樹的深度最低使用陣列構造二叉樹---水平遍歷bfs使用隊儲存節點
陣列 ,構造二叉樹
3 / \
9 20
/ \15 7
function create($bt,$arr)
$p->key=$arr[$i];
$p->left=new btree();
$qu->push($p->left);
$p->right=new btree();
$qu->push($p->right);
$i++;
}}$bt =new btree();
$arr=array(3,9,20,'#','#',15,16);
create($bt,$arr);
function create3($bt,$arr,$begin,$end)
3 迭代方式實現先序 中序遍歷
非遞迴的中序和先序遍歷方法相同。但是後序遍歷,要棧不僅儲存樹指標的位置,還要有是否訪問過其右子樹
先序---採用棧
function pretran($bt)
else
}}
中序遍歷
function ortran($bt)
else
}}
後序遍歷,還要記錄每個節點訪問的次數,當訪問過一次其flag加1,訪問次數為2次的表示左右子樹已經訪問過,則出棧。為1表示左子樹已經訪問過,右字數沒有訪問過。
function
postorder($bt)
$p=$st[count($st)-1];
if($p->flag==1)else if($p->flag==2)
}}
水平遍歷
二叉樹的定義
滿二叉樹 除葉子結點外,所有結點均有兩個子結點。所有葉子結點在同一層。完全二叉樹 若設二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹 可以根據公式進行推導,假設n0是度為0的結點總數 即 葉子結點 數 n1是度...
二叉樹的定義
樹的概念 子節點和父節點 是相對定義的 一棵樹的根節點稱為該樹的子樹的根節點的父節點 子樹的根是樹根的子節點 邊 從父節點到子節點的連線 邊有方向 兄弟節點 父節點相同的節點互為兄弟節點 樹葉 分支節點 沒有子節點的節點稱為樹葉,樹中的其餘節點稱為分支節點 分支節點可只有乙個分支 祖先和子孫 基於父...
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...