二叉樹遍曆演算法

來源:互聯網
上載者:User

二叉樹遍曆,是值從根節點出發,按照某種次序依次訪問二叉樹中的所有節點,使得每個節點被訪問一次且僅被訪問依次。

圖是百度搜的。。。謝謝提供圖的英雄。。

前序走訪二叉樹:如果二叉樹為空白則返回,若二叉樹非空,則先遍曆左樹,再遍曆右樹,遍曆順序為ABCDEGF。

中序遍曆二叉樹:如果二叉樹為空白則返回,若二叉樹非空,則從根節點開始,中序遍曆根節點的左子樹,然後是訪問根節點,最後中序遍曆右子樹,遍曆順序為CBEGDFA。

後序遍曆二叉樹:如果二叉樹為空白則返回,若二叉樹非空,則從左至右先葉子後節點的訪問遍曆訪問左右子樹,最後是訪問根節點。訪問順序為CGEFDBA。

層序遍曆二叉樹:如果二叉樹為空白則返回,若二叉樹非空,則從樹的第一層,也就是根節點開始訪問,從上而下逐層遍曆,在同一層中,按照從左至右的順序對節點逐個訪問。訪問順序為ABCDEFG。


現在,我們用PHP代碼,來遍曆二叉樹結構。二叉樹是放一個大數組,每一個節點都有三個欄位,data表示這個節點的值,lChild表示這個節點的左邊子節點,rChild表示這個節點的右邊子節點。二叉樹的結構我們用上面那張圖。


二叉樹結構代碼如下:



//二叉樹

$arr = array(

'data' => 'A',

'lChild' => array(

'data' => 'B',

'lChild' => array(

'data' => 'C',

'lChild' => array(),

'rChild' => array(),

),

'rChild' => array(

'data' => 'D',

'lChild' => array(

'data' => 'E',

'lChild' => array(),

'rChild' => array(

'data' => 'G',

'lChild' => array(),

'rChild' => array(),

),

),

'rChild' => array(

'data' => 'F',

'lChild' => array(),

'rChild' => array(),

),

),

),

'rChild' => array(),

);




遍曆演算法一:前序走訪二叉樹



//前序走訪二叉樹演算法

echo '前序走訪二叉樹演算法:';

PreOrderTraverse($arr);

echo '
';

function PreOrderTraverse($node){

if(empty($node)){

return;

}

//輸出值

print_r($node['data']);

//左節點

PreOrderTraverse($node['lChild']);

//右節點

PreOrderTraverse($node['rChild']);

}




遍曆演算法二:中序遍曆二叉樹



//中序遍曆二叉樹演算法

echo '中序遍曆二叉樹演算法:';

inOrderTraverse($arr);

echo '
';

function inOrderTraverse($node){

if(empty($node)){

return;

}

//左節點

inOrderTraverse($node['lChild']);

//輸出值

print_r($node['data']);

//右節點

inOrderTraverse($node['rChild']);

}




遍曆演算法三:後序遍曆二叉樹



//後序遍曆二叉樹演算法

echo '後序遍曆二叉樹演算法:';

postOrderTraverse($arr);

echo '
';

function postOrderTraverse($node){

if(empty($node)){

return;

}

//左節點

postOrderTraverse($node['lChild']);

//右節點

postOrderTraverse($node['rChild']);

//輸出值

print_r($node['data']);

}

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.