您現在的位置是:首頁 >綜合 > 2023-10-25 03:24:08 來源:
排序二叉樹的刪除(排序二叉樹)
大家好,我是小夏,我來為大家解答以上問題。排序二叉樹的刪除,排序二叉樹很多人還不知道,現在讓我們一起來看看吧!
二叉排序樹又叫二叉查找樹。
它的定義:
1、若根結點的左子樹非空,則左子樹上所有結點的關鍵字值均小于等于根結點的關鍵字值。
2、若根結點的右子樹非空,則右子樹上所有結點的關鍵字值均大于等于根結點的關鍵字值。
3、根結點的左、右子樹也分別為二叉排序樹。
中序遍歷后得到一個有序的序列;
下面是實現的程序
/************************************************************************/
/* 題目:控制臺下二叉排序樹的建立,中序遍歷 */
/* 時間:2010-3-11 上午10時9分 */
/* coder:huifeng00 */
/************************************************************************/
#include#include using namespace std; typedef struct node { int element; struct node* left; struct node* right; }Node,*NodePtr; void insertNode(NodePtr *head,int data)//插入節點,注意這用了指向指針的指針,很有意思 { if (*head==NULL) { *head=new Node; (*head)->element=data; (*head)->left=NULL; (*head)->right=NULL; } else { if (data<=(*head)->element) { insertNode(&((*head)->left),data); } else { insertNode(&((*head)->right),data); } } } NodePtr creatTree()//構造二叉排序樹,控制臺下輸入整數,0表示結束輸入 { NodePtr head=NULL; int data; scanf("%d",&data); while(data!=0) { insertNode(&head,data); scanf("%d",&data); } return head; } void printTree(NodePtr head)//中序遍歷二叉排序樹,得到有序序列 { if(head!=NULL) { printTree(head->left); printf("%d ",head->element); printTree(head->right); } } int main() { NodePtr head; printf("請輸入一串整數,空格隔開,0表示輸入結束 "); head=creatTree(); printf("中序遍歷二叉排序樹 "); printTree(head); printf(" "); return 0; } 運行結果,可以查看 http://hi.baidu.com/huifeng00/blog/item/d6b9c837d0997180a61e129d.html
本文到此講解完畢了,希望對大家有幫助。