資料結構C 二叉樹遍歷方法

2021-09-27 12:40:47 字數 1562 閱讀 2332

隨機生成二叉樹是我自己寫的,隨機性不是很大,應該也有漏洞,看著辦吧。

#include #include #include #define maxsize 5

//二叉樹的四種遍歷方法

//結構體構造

typedef struct btnodebtnode;

//對根的操作

void visit(btnode *p)

//1.先序遍歷

void preorder(btnode *bt)

}//1.非遞迴先序遍歷

void preordernonrecursion(btnode *bt)

if(p->lchild != null)

} }}//2.中序遍歷

void inorder(btnode *bt)

} //2.非遞迴中序遍歷

void inordernonrecursion(btnode *bt)

if(top!=-1)

} }} //3.後序遍歷

void postorder(btnode *bt)

} //3.非遞迴後序遍歷

void postordernonrecursion(btnode *bt)

if(p->rchild != null)

} //輸出二棧中的後序

while(top2!=-1)

}} //4.層次遍歷

void level(btnode *bt)

if(p->rchild!=null)

} }

} //隨機獲得二叉樹 (並不完善,隨機性很弱)

btnode* getnode(int a[maxsize])

}else if(x==0 && q->rchild==null)

}else if(x==1)else

} else if(x==0)else

} } return bt;

}int main();

//隨機生成二叉樹

btnode *bt = getnode(a);

//先序遍歷

printf("先序遍歷\n 遞迴:");

preorder(bt);

printf("\n非遞迴:");

preordernonrecursion(bt);

printf("\n");

//中序遍歷

printf("中序遍歷\n 遞迴:");

inorder(bt);

printf("\n非遞迴:");

inordernonrecursion(bt);

printf("\n");

//後序遍歷

printf("後序遍歷\n 遞迴:");

postorder(bt);

printf("\n非遞迴:");

postordernonrecursion(bt);

printf("\n");

printf("層次遍歷\n");

level(bt);

return 0;

}

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...

資料結構 遍歷二叉樹

二叉樹的遍歷原理 二叉樹的遍歷是指從根節點出發,按照某種次序以此訪問二叉樹所有節點,使得每個節點被訪問一次且僅被訪問一次 二叉樹遍歷方法 1.前序遍歷 規則是若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹 2.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...