1樓:刺友互
1、首先要定義兩個類:結點類和二叉樹類。
2、二叉樹類的組成:建立樹的函式、遍歷函式、刪除函式。求結點數函式。
3、採用遞迴的思想,遇到識別符號表示該結點為空,否則開闢空間建立新結點,同時呼叫遞迴開闢左結點和右結點。
4、前序遍歷函式。
5、刪除函式的思路:如果當前結點不為空,採用遞迴訪問左結點和右結點、**當前結點的空間。
6、求結點數函式的思路:如果當前結點為空,返回0、如果當前結點的左右孩子都為空,放回1。
7、求樹高函式的思路:如果當前結點為空,返回0、遞迴訪問左孩子和右孩子、比較左右孩子的高度,返回 較大值+1。
2樓:方鴻暉
typedef struct bitnode bitnode, *bitree;
void countleaf (bitree t, int& count)
else return;
} // countleaf
試以二叉鍊表作儲存結構,編寫演算法統計二叉樹中的葉子結點的個數,要求用中序遍歷的思想實現
3樓:暴天空
很容易寫的,就用乙個先序遍歷來執行,然後當左右子樹都為空的時候i++,然後當遍歷結束的時候輸出i值,就是葉子結點的個數
只給你提供個思路,具體**自己實現
4樓:匿名使用者
int k=0; //葉子節點數
mid(tree t)
最後得到的k即為總的葉子節點數
資料結構試題;設一棵二叉樹以二叉鍊表為儲存結構,試寫一演算法求該二叉樹上度為2的結點個數
5樓:匿名使用者
演算法步驟:
設根節點為 r。
情況1,如果 r 既有左孩子又有右孩子,則返回 1 + 遞迴求左子樹度為2節點個數 + 遞迴求右子樹度為2節點個數。
情況2,如果 r 只有左孩子,則返回 遞迴求左子樹度為2節點個數。
情況3,如果 r 只有右孩子,則返回 遞迴求右子樹度為2節點個數。
情況4,如果 r 既沒有左孩子又沒有右孩子,則返回 0。
二叉樹t採用二叉鍊表作儲存結構,試設計乙個演算法計算二叉樹中度為1的結點數
6樓:匿名使用者
int numofone(binode*p)else if(p->rchild!=null&&p->lchild=null)
return count;
}int num()
假設以二叉鍊表作為二叉樹的儲存結構,試編寫乙個求樹的高度的演算法
7樓:匿名使用者
int length(bitree t)
bitree find(bitree t,elemtype x) //該函式返回給定值的結點的指標
8樓:易xiao萱
#include
using namespace std;
template
struct binode
;template
class bitree
void preorder()
int deepth()
int empty();
private:
binode*root;
binode*creat(binode*bt);
int deepth(binode*bt);
};template
binode*bitree::creat(binode*bt)return bt;
}template
int bitree::empty()
template
int bitree::deepth(binode*bt)//求深度的演算法
}int main()
return 0;}
9樓:_青青子衿
int btnodedepth (btnode *t)}
關於二叉樹,高分!二叉樹!!!
這些函式都挺好編的,只是在建立的時候我是用先序遞迴建的樹,不知道可不可以。二叉樹!二叉樹是否這樣的,如果是,那答案沒問題的,不然傳一張圖上來 二叉樹問題 先解釋為什麼d對,因為二叉樹的二叉鍊表儲存時,鍊表中的每個結點包含兩個指標,分別指向結點的左孩子和右孩子。而樹的鍊表儲存時,鍊表中的結點的兩個指標...
什麼是二叉樹,舉二叉樹的例子,什麼是二叉樹,舉一個二叉樹的例子
二叉樹樹是一種重要的非線性資料結構,直觀地看,它是資料元素 在樹中稱為結點 按分支關係組織起來的結構,很象自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資...
r語言如何二叉樹,如何構建二叉樹
define telemtype inttypedef struct bitnodebitnode,bitree 先序建立二叉樹 void createbitree bitree t t data c createbitree t lchild createbitree t rchild 先序遞迴建...