c語言 資料結構 二叉樹的儲存及遍歷 學習記錄

2021-09-25 22:13:12 字數 1889 閱讀 9834

binarytree.h

#ifndef binarytree_h_included

#define binarytree_h_included

#include #include #include #include #define maxsize 100

typedef char elemtype;

typedef struct node

btnode;

void createbtnode(btnode **b,char *str);

btnode *findnode(btnode *b,elemtype x);//查詢

int btnodedepth(btnode *b);

void dispbtnode(btnode *b);//輸出二叉樹

btnode *lchildnode(btnode *p);

btnode *rchildnode(btnode *p);

//遞迴遍歷

void preorder(btnode *b);

void inorder(btnode *b);

void postorder(btnode *b);

//非遞迴遍歷

void preorder1(btnode *b);

void inorder1(btnode *b);

void postorder1(btnode *b);

//層序遍歷

void levelorder(btnode *b);

#endif // binarytree_h_included

binarytree.c

#include "binarytree.h"

//建立二叉樹

void createbtnode(btnode **b,char *str)}}

j++;

ch=str[j];

}}//查詢節點

btnode *findnode(btnode *b,elemtype x)

}//求出高度

int btnodedepth(btnode *b)

}//輸出二叉樹

void dispbtnode(btnode *b)

}}//得到左節點

btnode *lchildnode(btnode *p)

//得到右節點

btnode *rchildnode(btnode *p)

//遞迴前序

void preorder(btnode *b)

}//遞迴中序

void inorder(btnode *b)

}//遞迴後序

void postorder(btnode *b)

}//非遞迴先序

void preorder1(btnode *b)

if (p->lchild!=null) //左孩子節點入棧

}}//非遞迴中序

void inorder1(btnode *b)

if (top>-1)

}}//非遞迴後序

void postorder1(btnode *b)

p=null;

flag=1; //表示*b的左子樹已訪問或為空

while (top!=-1 && flag==1)

else}}

while (top!=-1);

}//層序遍歷

void levelorder(btnode *b)

if (p->rchild!=null)

}}

main.c

#include "binarytree.h"

int main()

C語言 資料結構 二叉樹

一 樹的概念及結構 1.樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合。把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,...

資料結構 二叉樹(c語言)

一下 是二叉樹的相關 包括二叉樹的根據前序遍歷建立二叉樹。根據前序遍歷 中序遍歷與後續遍歷依次查詢二叉樹的各個節點。include 定義二叉樹節點資料型別 typedef struct bitnode bitnode,bitree bitree為指向bitnode這種結構的指標 前序構造二叉樹函式 ...

C語言 資料結構 二叉樹

實驗報告內容 一 實驗目的 要求 1 熟練掌握二叉樹的二叉鍊錶儲存結構的建立 二叉樹的三種遍歷演算法以及基於遍歷的幾種操作的實現。2 編寫適當的主函式和相關函式,使實驗題目執行出正確結果。3 當場程式設計 除錯 編譯。4 程式具有一定的健壯性 可讀性,盡量簡潔。5 程式執行完成後分別存檔,上交實驗報...