📄 叶子结的点法.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 + -