日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言實現二叉樹的三種遍歷

作者:Y6blNU1L 更新時間: 2022-07-19 編程語言
#include <stdio.h>
#include <stdlib.h>

typedef struct BiTNode{
	char data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

//先序遍歷 
void PreOrder(BiTree t){
	if(t!=NULL){
		printf("%c ",t->data);//訪問根節點
		PreOrder(t->lchild);  //訪問左節點 
		PreOrder(t->rchild); //訪問右節點 
	}
}

//中序遍歷 
void InOrder(BiTree t){
	if(t!=NULL){
		InOrder(t->lchild);  //訪問左節點 
		printf("%c ",t->data);//訪問根節點
		InOrder(t->rchild); //訪問右節點 
	}
}

//后序遍歷 
void PostOrder(BiTree t){
	if(t!=NULL){
		PostOrder(t->lchild);  //訪問左節點 
		PostOrder(t->rchild); //訪問右節點 
		printf("%c ",t->data);//訪問根節點
	}
}

//統計二叉樹節點的總數目
int BiTreeLength(BiTree root)
{
	if(root==NULL) return 0;
	return 1+BiTreeLength(root->lchild) + BiTreeLength(root->rchild);
}

//初始化樹節點 
void InitBiTree(BiTree &root){
	root=(BiTree)malloc(sizeof(BiTNode));
	root->data={'A'};
	root->lchild=root->rchild=NULL;
	
	BiTNode *p1=(BiTNode *)malloc(sizeof(BiTNode));
	p1->data={'B'};
	p1->lchild=p1->rchild=NULL;
	root->lchild=p1;
	
	BiTNode *p2=(BiTNode *)malloc(sizeof(BiTNode));
	p2->data={'C'};
	p2->lchild=p2->rchild=NULL;
	root->rchild=p2;
	
	BiTNode *p3=(BiTNode *)malloc(sizeof(BiTNode));
	p3->data={'D'};
	p3->lchild=p3->rchild=NULL;
	p1->lchild=p3;
	
	BiTNode *p4=(BiTNode *)malloc(sizeof(BiTNode));
	p4->data={'E'};
	p4->lchild=p4->rchild=NULL;
	p1->rchild=p4;
	
	BiTNode *p5=(BiTNode *)malloc(sizeof(BiTNode));
	p5->data={'F'};
	p5->lchild=p5->rchild=NULL;
	p2->lchild=p5;
	
	BiTNode *p6=(BiTNode *)malloc(sizeof(BiTNode));
	p6->data={'G'};
	p6->lchild=p6->rchild=NULL;
	p2->rchild=p6;
}

int main(){
	BiTree root=NULL;
	InitBiTree(root);
	PreOrder(root); 
	printf("\n");
	InOrder(root);
	printf("\n");
	PostOrder(root);
	printf("\n");
	int cnt=BiTreeLength(root);
	printf("二叉樹的深度為:%d\n",cnt);
	return 0;
}

原文鏈接:https://blog.csdn.net/qq_44223394/article/details/125857243

欄目分類
最近更新