⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 叶子结的点法.txt

📁 数据结构的二叉树的叶子结点的求法 范围较好 功能良好 采用链试结构得以实现
💻 TXT
字号:
#include<iostream.h> 
#include<stdio.h> 
#include<stdlib.h> 
typedef int Status; 

//----二叉树----- 

typedef char TElemType; //元素类型为字符类型 
typedef struct BiTNode{ 
TElemType data; 
struct BiTNode *lchild, *rchild; //左右孩子指针 
}BiTNode, *BiTree; 

int NUM=0; 

//------基本操作的函数 
Status InitBitTree(BiTree &T) //构造一个空二叉树T 
{ 
T=new BiTNode; 
if(!T){ cout<<"构造空树时出错"<<endl; return false;} 

T->data =NULL; 
T->lchild =NULL; 
T->rchild =NULL; 

return true; 
}//InitBitTree 

Status CreateBiTree(BiTree &T) //构造一个二叉链表表示的二叉树T 
{ 
char ch; 
cout<<"请输入结点的值(字符型,若空则用'#'): "; 
cin>>ch; 
if(ch=='#') T=NULL; 
else 
{ 
//if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(1); 
T=new BiTNode; 
if(!T) exit(1); 
T->data =ch; //生成根结点 
CreateBiTree(T->lchild ); //构建左子树 
CreateBiTree(T->rchild ); //构建右子树 
} 
return 0; 
} //CreateBiTree 

Status Visit(TElemType e) //对结点的操作函数 
{ 
cout<<e; 
return ' '; 

} 

void InOrderTraverse(BiTree T,Status (*visit)(TElemType )) //中序遍历T,对每个结点调用函数Visit一次且仅一次,一旦失败,则操作失败 
{ 
if(T) //若二叉树不为空 
{ 
InOrderTraverse(T->lchild, visit); //递归调用访问左子树 
visit(T->data ); //访问根结点, 
if(T->rchild==NULL) 
NUM++; 
InOrderTraverse(T->rchild ,visit); //递归调用访问右子树 
} 
} 
int main() 
{ 
BiTree T; 
InitBitTree(T); 
CreateBiTree(T); 
cout<<"中序遍历(打印); "<<endl; 
InOrderTraverse(T,Visit); 
printf("叶子节点数:%d\n",NUM); 
cin.get(); 
//cin.get(); 
return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -