C++二叉树叶子结点的个数

在这里插入图片描述

//Author:PanDaoxi
#include <iostream>
using namespace std;
struct node{
    
    
	int left,right;
	char value;
}data[101];
int root=0,cnt=0;
char ch;
int buildTree(int bt){
    
    
	cin>>ch;
	if(ch=='#'){
    
    
		bt=0;
		return bt;
	}
	else{
    
    
		bt=++cnt;
		data[bt].value=ch;
		data[bt].left=data[bt].right=0;
		data[bt].left=buildTree(bt);
		data[bt].right=buildTree(bt);
	}
	return bt;
}
int func(int bt){
    
    
	if(bt){
    
    
		if(data[bt].left==0&&data[bt].right==0){
    
    
			return 1;
		}
		else {
    
    
			return func(data[bt].left)+func(data[bt].right);
		}
	}
	else return 0;
}
int main(){
    
    
	root=0;
	cnt=0;
	root=buildTree(0);
	cout<<func(root)<<endl;
	return 0;
} 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/PanDaoxi2020/article/details/120935502
今日推荐