二叉樹的建立和遞迴遍歷 非遞迴遍歷操作

2021-07-02 07:10:07 字數 2611 閱讀 8308

二叉樹是我們平時使用較多的一種資料結構,它是每個節點最多有兩個子樹的樹結構。關於樹的概念和性質就不再多介紹,我來對數的建立和一些操作進行總結。

首先我們定義樹的資料型別:

typedef struct tree_node

*tree_node;

樹有乙個資料域和兩個指標域,採用的是鏈式儲存結構;

我們定義乙個tree_node t之後我們首先要建立並輸入乙個樹:

tree_node createtree()   //樹的建立

return t;

}

在輸入樹的過程中,我們需要輸入符號來判斷這個樹的節點到這裡是否停止了,所以有乙個判斷if(ch=='#');

這樣我們便建立好乙個樹了,並且輸入了資料,我們對數最基本也是重要的操作當然就是遍歷,對於樹的遍歷我們有三種方式,分別是前序遍歷,中序遍歷,後序遍歷,我們先看看遞迴遍歷的方法:

void preorder(tree_node t)  //先序遍歷

}

void intorder(tree_node t)  //中序遍歷

}

void preorder(tree_node t)  //先序遍歷

}

這是我們用遞迴的方式對樹進行的遍歷,若我們不採用遞迴的方式,我們如何進行遍歷:

void preorder(tree_node t) //前序遍歷

if(!s.empty())

}}

void intorder(tree_node t) //中序遍歷

if(!s.empty())

}}

typedef struct node1

*btnode;

void postorder(tree_node t) //後序遍歷

if(!s.empty())

else}}

}

非遞迴的的後序遍歷比較麻煩,需要我們沿著左子樹一直向下搜尋,直到沒有左子樹的時候,我們此時不能出棧訪問,我們還需講右子樹入棧,我們把右子樹做了相同處理之後,我們才可以出棧訪問,這樣我們就需要多設定乙個標識每個節點第幾次到達棧頂,只有第二次到達棧頂的時候我們才可以出棧訪問。

完整的**如下:

#include#include#include#includeusing namespace std;

typedef struct tree_node

*tree_node;

typedef struct node1

*btnode;

tree_node createtree() //樹的建立

return t;

}void preorder(tree_node t) //先序遍歷

}//void preorder(tree_node t) //先序遍歷

//// if(!s.empty())

//

// }

//}void intorder(tree_node t) //中序遍歷

}//void intorder(tree_node t) //中序遍歷

//// if(!s.empty())

//

// }

//}void postorder(tree_node t) //後序遍歷

}//void postorder(tree_node t) //後序遍歷

//// if(!s.empty())

//

// else

//

// }

// }

//}int main()

; int height;

int i,a=0;

tree_node t;

t=createtree();

printf("前序遍歷:");

preorder(t) ;

printf("\n");

printf("中序遍歷:");

intorder(t);

printf("\n");

printf("後序遍歷:");

postorder(t);

printf("\n");

}

二叉樹的建立和遞迴 非遞迴遍歷

二叉樹的葉子結點總是比雙分支結點多乙個。滿二叉樹 如果有h層,則總結點個數為2h 次方 1,每一層有2h 1 次方 個結點。分析 演算法描述 include include define n 9 定義結構體 結點資訊 typedef struct nodebtnode 結構體名為btnode btn...

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

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...

C 二叉樹的建立,遍歷(遞迴,非遞迴)

include include define maxsize 20 typedef struct bitnodebitnode,bitree 浜屽弶鏍戠殑閫掑綊寤虹珛 inti 0 bitree create bitree t,char s else else return t 涓 簭閬嶅巻 voi...