二叉樹葉子個數
資料結構實驗之二叉樹七:葉子問題
Time Limit: 1000MS Memory limit: 65536K
題目描述
已知一個按先序輸入的字元序列,如abd,,eg,,,cf,,,(其中,表示空結點)。請建立該二叉樹並按從上到下從左到右的順序輸出該二叉樹的所有葉子結點。
輸入
輸入資料有多行,每一行是一個長度小於50個字元的字串。
輸出
按從上到下從左到右的順序輸出二叉樹的葉子結點。
示例輸入
abd,,eg,,,cf,,,
xnl,,i,,u,,
示例輸出
dfg
uli
Time Limit: 1000MS Memory limit: 65536K
題目描述
已知一個按先序輸入的字元序列,如abd,,eg,,,cf,,,(其中,表示空結點)。請建立該二叉樹並按從上到下從左到右的順序輸出該二叉樹的所有葉子結點。
輸入
輸入資料有多行,每一行是一個長度小於50個字元的字串。
輸出
按從上到下從左到右的順序輸出二叉樹的葉子結點。
示例輸入
abd,,eg,,,cf,,,
xnl,,i,,u,,
示例輸出
dfg
uli
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
typedef struct node
{
char data;
struct node *l,*r;
} Node;
Node*queue[1000];
int front,rear;
int j,k;
char s[100];
Node*create_tree();
void find_leaf_by_level_visit(Node*p);
int main()
{
Node*root;
while((scanf("%s",s))!=EOF)
{
j = 0;
k = strlen(s);
root = create_tree();
find_leaf_by_level_visit(root);
printf("\n");
}
return 0;
}
Node*create_tree()
{
Node*p;
if(s[j] == ',' || j >= k)
{
j++;
p = NULL;
return p;
}
else
{
p = (Node*)malloc(sizeof(Node));
p->data = s[j++];
p->l = create_tree();
p->r = create_tree();
}
return p;
}
void find_leaf_by_level_visit(Node*p)
{
Node *q;
front = rear = 0;
if(p)
{
queue[rear++] = p;//進佇列進行判定
while(front < rear)//佇列不空取隊首檢測是否為葉子
{
q = queue[front++];
/*q所指節點為葉子輸出*/
if(q->l == NULL && q->r == NULL)
printf("%c",q->data);
/*不是葉子,將其子節點入佇列*/
if(q->l)
queue[rear++] = q->l;
if(q->r)
queue[rear++] = q->r;
}
}
}
相關文章
- 二叉樹節點個數,葉子個數,第K層個數,最低公共節點二叉樹
- 為什麼二叉樹中葉子節點個數等於度為2的節點個數+1二叉樹
- day 15|二叉樹part03|110.平衡二叉樹|257. 二叉樹的所有路徑|404.左葉子之和| 222.完全二叉樹的節點個數二叉樹
- 程式碼隨想錄day15 || 110 平衡二叉樹,257 二叉樹所有路徑,404 左葉子之和,222 完全二叉樹節點個數二叉樹
- 樹2-二叉樹複製, 遍歷, 計算葉子結點和高度二叉樹
- 872. 葉子相似的樹
- 二叉查詢樹的個數
- 二叉樹的子樹和子結構 c++二叉樹C++
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 二叉樹的子結構二叉樹
- 程式碼隨想錄演算法訓練營第十五天| 110.平衡二叉樹,257. 二叉樹的所有路徑, 404.左葉子之和, 222.完全二叉樹的節點個數演算法二叉樹
- 程式碼隨想錄——二叉樹-11.完全二叉樹的節點個數二叉樹
- 快速求完全二叉樹的節點個數二叉樹
- 【js】Leetcode每日一題-葉子相似的樹JSLeetCode每日一題
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 如何計算二叉樹中葉節點的數量 - Java迭代和遞迴演算法二叉樹Java遞迴演算法
- 程式碼隨想錄演算法訓練營第十五天|leetcode110. 平衡二叉樹、leetcode257.二叉樹的所有路徑、leeetcode404.左葉子之和、leetcode222.完全二叉樹的節點個數演算法LeetCode二叉樹
- 計算二叉樹的層數二叉樹
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 二叉樹 & 二叉查詢樹二叉樹
- 程式碼隨想錄演算法訓練營第十七天| 110. 平衡二叉樹 257. 二叉樹的所有路徑 404. 左葉子之和演算法二叉樹
- 程式碼隨想錄演算法訓練營第第17天 | 110.平衡二叉樹、257. 二叉樹的所有路徑、404.左葉子之和演算法二叉樹
- 二叉樹的五個性質二叉樹
- 排序二叉樹和平衡二叉樹排序二叉樹
- 二叉查詢樹(二叉排序樹)排序
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- leetcode----給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷)LeetCode二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- 二叉樹二叉樹
- 引數為二叉樹和一個整數,求所有和為該整數的路徑二叉樹
- 二叉樹的應用(1)--二叉樹排序樹基本操作二叉樹排序
- LeetCode-222-完全二叉樹的節點個數LeetCode二叉樹
- 判斷二叉樹是否為滿二叉樹二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 自己動手作圖深入理解二叉樹、滿二叉樹及完全二叉樹二叉樹