資料結構 樹

2021-07-05 18:02:47 字數 1217 閱讀 4655

二叉樹性質回顧(滿二叉樹、完全二叉樹等)

給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。

我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。

//層序遍歷 並分層列印 如果不用分層的話只用佇列實現就行了,不需要內層迴圈

void printtreelevel(pnode root)

printf("\n");

}}

二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

typedef struct node node,*pnode;

void insert(pnode *root, keytype key)

if((*root)->left==null&&(*root)->key>key)

if((*root)->right==null&&(*root)->keyparent=(*root);

(*root)->right=p;

return;

} if((*root)->key>key) insert(&((*root)->left),key);

else if((*root)->keyright),key);

else return;

}void create(pnode *root, keytype *nodearray, int length);

create(&root,nodearray,11);

//printtree(root);

//printtreelevel(root);

}

含有相同節點的二叉查詢樹可以有不同的形態,而二叉查詢樹的平均查詢長度與樹的深度有關,所以需要找出乙個查詢平均長度最小的一棵,那就是平衡二叉樹(圖b),具有以下性質:

(1)要麼是棵空樹,要麼其根節點左右子樹的深度之差的絕對值不超過1;

(2)其左右子樹也都是平衡二叉樹;

(3)二叉樹節點的平衡因子定義為該節點的左子樹的深度減去右子樹的深度。則平衡二叉樹的所有節點的平衡因子只可能是-1,0,1。

資料結構 樹

樹的概念 1.家族樹 在現實生活中,有入如下血統關係的家族可用樹形圖表示 張源有三個孩子張明 張亮和張麗 張明有兩個孩子張林和張維 張亮有三個孩子張平 張華和張群 張平有兩個孩子張晶和張磊。以上表示很像一棵倒畫的樹。其中 樹根 是張源,樹的 分支點 是張明 張亮和張平,該家族的其餘成員均是 樹葉 而...

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

1.樹結構 資料結構中的樹是是對自然界中樹的形象的模仿,如圖1所示 圖1 樹結構的抽象 自然界中的樹和資料結構中的樹都是由乙個根引出,樹是一種分層系統中的非線性結構。2.樹的術語 圖2 樹的示意圖 1 結點 如圖2所示,a i這些圓圈就是結點,它是樹的基本構成單位。結點中的內容是資料項和指向其他結點...