国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

二叉查找樹 POJ Falling Leaves

2019-11-08 03:06:56
字體:
來源:轉載
供稿:網友

原題描述(我的翻譯版): 這里寫圖片描述 圖1顯示了字母二叉樹的圖形表示。熟悉字母二叉樹概念的人可以跳過接下來的定義,切入正題。 字母二叉樹滿足下面兩條之一: 1. 它可以是空樹, 2. 它可以有一個根節點,該節點以;一個字母作為數據并且指向左子樹和右子樹。左子樹和右子樹也是字母二叉樹。 在字母二叉樹的圖形表示中: 1. 空樹完全省略 2. 每一個節點都代表: 一個字母, 左子樹不為空將該節點和左子樹相連, 右子樹不為空將該節點和右子樹相連, 葉子節點就是左右子樹為空的節點。圖1中的B, D, H, P和Y為葉子節點。 問題: 在字母二叉查找樹上考慮以下操作順序: 刪除葉子節點,并列出數據刪除, 重復這個過程直到樹為空, 從樹的左下方開始,我們產生樹的顯示序列,然后通過刪除數據的葉子節點使得樹為空。

節點刪除如下: BDHPY CM GQ K 給個圖: 這里寫圖片描述 你的問題是通過這些序列,輸出原樹的先序遍歷。 輸入: 輸入將包含一個或多個數據集。每個數據集是一行或多行大寫字母的序列。 該行包含在上述階段中從二叉搜索樹中移除的葉子節點。一行的字母將按字母順序排列。數據集是由一行只有一個星號(“*”)分離。 最后一個數據集后面是一行只包含一個美元的符號($)。輸入中沒有空格或空行。 輸出: 對于每個輸入數據集,有一個唯一的二叉搜索樹對應產生的葉子節點的序列。輸出一行即那棵樹的先序遍歷,不能有空格。 輸入樣例: BDHPY CM GQ K * AC B

$ 輸出樣例: KGCBDHQMPY BAC 大意是讓我們對每一個數據集建立一個二叉樹,這個二叉樹是很特殊的,它是一個二叉查找樹(觀察左右子樹與根結點的關系,左子樹比其小,右子樹大),所以我們不難寫出代碼,這個題是一道二叉查找樹的基礎例題。 代碼如下:

#include<cstdio>#include<string>#include<queue>#include<iostream>using namespace std;struct node{ char data; node* lch; node* rch;}*root;void insert(node *&root,char x){ if(root==NULL) { root=new node; root->data=x; root->lch=NULL;//一定要對左右子樹賦初值NULL root->rch=NULL; return; } if(root->data==x) return; else { if(x-'A'>root->data-'A') { insert(root->rch,x); } if(x-'A'<root->data-'A') { insert(root->lch,x); } }}void fir(node *root){ if(root==NULL) return; else {
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武城县| 全椒县| 灌南县| 五常市| 南部县| 伊通| 新和县| 晋城| 平武县| 蒙阴县| 慈溪市| 四平市| 浦县| 正宁县| 小金县| 沽源县| 黑龙江省| 新密市| 金川县| 顺昌县| 榆社县| 中西区| 神木县| 修水县| 高清| 福州市| 石阡县| 太仓市| 田林县| 阿拉善右旗| 舒城县| 师宗县| 澜沧| 庆元县| 福安市| 永胜县| 大港区| 新乡市| 伊宁市| 沂南县| 永平县|