遞迴和非遞迴輸出二叉查詢樹中所有的節點

2022-01-30 04:06:18 字數 958 閱讀 5508

首先,我們先來了解一下什麼是二叉查詢樹。

二叉查詢樹:(1)它是乙個二叉樹,關於二叉樹的概念(每個樹節點頂多只有2個子節點,也就是left-child和right-child,並且子節點是有左右之分的)。(2)對於二叉查詢樹中的每乙個節點,它的左節點的value<=根節點的value<=右節點的value

首先我們定義樹的資料結構,如下:

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace arithmeticlibrary

}private static mynode createtree()

如果看這個建立程式看不出圖形化的樹的結構,你可以按照程式手動的畫出樹的結構。

遞迴的輸出上面二叉查詢樹的所有的節點(中序遍歷):

關於二叉樹的遍歷,有先序遍歷,中序遍歷,後序遍歷。關於中序遍歷遍歷的定義:先遍歷樹的左節點,然後根節點,最後右節點。

遞迴的**如下:

private static void inputnodevalue(mynode node)

if (node.left != null)

console.writeline(node._value);

if (node.right!=null)

}可以看出演算法的時間複雜度為o(n)

如果採用非遞迴的方法,此時我們是借用了stack這個輔助的資料結構來做的,**如下:

private static void non_inputnodevalue(mynode root)

while(stack.count!=0)

if (node.left != null)}}

完整的程式還少了乙個main函式,如下:

static void main(string args)

二叉搜尋樹(遞迴 非遞迴)

完整源 在此 1 二叉搜尋樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹。若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有的節點的值都大於根節點的值 它的左右子樹也分為二叉搜尋樹 此二叉樹的中序遍歷結果為 0,1,2,3...

二叉樹 遞迴 非遞迴

include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...

二叉樹的非遞迴遍歷(遞迴和非遞迴)

二 叉樹是一種非常重要的資料結構,很多其它資料結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序 中序以及後序三種遍歷方法。因為樹的定義本身就是 遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且 很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採用棧去模擬實現。在三種遍歷中,前序和中...