統計利用先序遍歷創建的二叉樹葉結點的個數

統計利用先序遍歷創建的二叉樹葉結點的個數
1000(ms)
10000(kb)
2563 / 4715

利用先序遞歸遍歷算法創建二叉樹並計算該二叉樹葉結點的個數。先序遞歸遍歷建立二叉樹的方法爲:按照先序遞歸遍歷的思想將對二叉樹結點的抽象訪問具體化爲根據接收的數據決定是否產生該結點從而實現創建該二叉樹的二叉鏈表存儲結構。約定二叉樹結點數據爲單個大寫英文字符。當接收的數據是字符"#"時表示該結點不需要創建,否則創建該結點。最後再統計創建完成的二叉樹葉結點的個數。需要注意輸入數據序列中的"#"字符和非"#"字符的序列及個數關係,這會最終決定創建的二叉樹的形態。

輸入

接受鍵盤輸入的由大寫英文字符和"#"字符構成的一個字符串(用於創建對應的二叉樹)。

輸出

輸出對應的二叉樹葉結點的個數。

樣例輸入

# A## ABC#### AB##C## ABCD###EF##G### A##B## #A

樣例輸出

0 1 1 2 3 1 0


#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
struct node
{
	char date;
	node *left,*right;
}*p;
int ans[101];
int m;
void set(node * &p)
{
	char ch;
	cin>>ch;
	if(ch=='#')
	{
		p=NULL;
	}
	else
	{
		p=new node;
		p->date=ch;
		p->left=NULL;
		p->right=NULL;
		set(p->left);
		set(p->right);
	}
}
void find(node *&p)
{
	if(p==NULL)
	{
		return;
	}
	if(p->left==NULL&&p->right==NULL)
	{
		m++;
	}
	else
	{
		find(p->left );
		find(p->right );
	}
}
int main()
{
	m=0;
	memset(ans,0,sizeof(ans));
	set(p);
	find(p);
	cout<<m;
	return 0;
}
二叉樹的基礎運用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章