数据结构实验八讲解指南

本博文源于数据结构第八次实验,我们先看实验内容,再看具体实现细节

实验八内容

写程序实现算法5.1 5.3 5.5 5.6,

实验八相关算法

5.1 中序遍历的递归算法

在这里插入图片描述
先访问左子树,打印,在访问右子树。if(T)是判断树是否为空了,如果本身子树为空,或者递归达到最底层那就空了

5.3 先序遍历顺序建立二叉树

在这里插入图片描述
这里不要忘记char ch

5.5 二叉树的深度

在这里插入图片描述
这里要int m与n

5.6 统计二叉树各结点的个数

在这里插入图片描述
这里没有需要注意的点

测试

我想要创建的树是

在这里插入图片描述

ABC##DE#G##F###
最后的结果是:
在这里插入图片描述

最后:完整源码

//dev c++ 6.3 running 
#include<iostream>
using namespace std;
typedef char TElemType ;
typedef struct BiTNode{
    
    
	TElemType data;  //data 
	struct BiTNode *left,*right;//left and right child

}BiTNode,*BiTree;

//5.1 algorithm
void InOrderTraverse(BiTree T){
    
    
	if(T){
    
    
		InOrderTraverse(T->left); //visit l child
		cout << T->data;          //visit data
		InOrderTraverse(T->right); //visit R child
		
	}
	
}

//5.3 algorithm
void CreateBiTree(BiTree &T){
    
    
	char ch;
	cin >> ch;
	if(ch=='#') T=NULL; //create empty tree
	else{
    
    
		T = new BiTNode;     //new root
		T->data = ch;         // data
		CreateBiTree(T->left); //create left tree
		CreateBiTree(T->right); //create right tree
		
	}
}

//5.5 
int Depth(BiTree T){
    
    
	if(T==NULL) return 0; //empty deepth 0
	else{
    
    
		int m = Depth(T->left); //count left child's deepth
		int n = Depth(T->right); //count right child's deepth
		return m>n?(m+1):(n+1);				
			
	}
	
	
}

//5.6
int NodeCount(BiTree T){
    
    
	//T count node
	if(T==NULL) return 0;//empty,node is 0
	else return NodeCount(T->left)+NodeCount(T->right)+1;
	//left node add right node + right;
}


int main(){
    
    
	BiTree T=new BiTNode;
	CreateBiTree(T);
	InOrderTraverse(T);
	cout << endl << "Depth:" << Depth(T);
	cout << endl << "NodeCount:" <<  NodeCount(T);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/124523364