1. 程式人生 > >二叉排序樹的遍歷及輸出

二叉排序樹的遍歷及輸出

#include<stdio.h>
#include<stdlib.h>
typedef struct node{//BST節點
int key;
struct node *lchild,*rchild;
}BSTNode,*BSTree;
void InsertBST(BSTree *bst,int key){//插入程式
BSTree s;
if(*bst==NULL){
s=(BSTree)malloc(sizeof(BSTNode));
s->key=key;
s->lchild=NULL;s->rchild=NULL;
*bst=s;
}
else if(key<(*bst)->key)
InsertBST(&((*bst)->lchild),key);
else if(key>(*bst)->key)
InsertBST(&((*bst)->rchild),key);
}
void CreateBST(BSTree *bst){//呼叫插入,實現BST的建立
int key;
*bst=NULL;
scanf("%d",&key);
while(key!=-1){
InsertBST(bst,key);
scanf("%d",&key);
}
}
void mid(BSTree *bst){//BST中序遍歷是一個遞增的序列
if(*bst){
mid(&((*bst)->lchild));
printf("%d ",(*bst)->key);
mid(&((*bst)->rchild));
}
}
void main(){
BSTree p;
CreateBST(&p);
mid(&p);
}

相關推薦

排序

OJ傳送門 /* 輸入一系列整數,建立二叉排序數,並進行前序,中序,後序遍歷 */ #include <stdio.h> #include <iostream> using namespace std; struct Node

排序的樹形結構輸出

最近看資料結構看到了二叉排序樹,便照著書上的例子自己寫了個頭檔案。 但是書上沒有寫到如何將二叉排序樹輸出,便自己琢磨著寫了個,原始碼中負責輸出的部分程式碼如下:  template <typename T> inline void BiSortTree<T&

排序輸出

#include<stdio.h> #include<stdlib.h> typedef struct node{//BST節點int key;struct node *lchild,*rchild; }BSTNode,*BSTree; void I

資料結構之排序

本文解決的問題是: 構建一個二叉排序樹,隨機產生20個樹,並實現該二叉樹的三種深度遍歷(遞迴和非遞迴)和一種廣度遍歷。 實現程式碼如下: #include<stdio.h> #include<stdlib.h> #define MaxSize 10

排序的建立,查詢,

1 #include<stdio.h> 2 #include <iostream> 3 #include<algorithm> 4 using namespace std; 5 #define MAXSIZE 100 6 typedef int KeyTy

go語言實現排序及其前序

結構  左右指標和存值的一個int type AVL struct{ left,right *AVL value int } 獲取左右節點的指標 func (a *AVL)getLeft()(*AVL) { if a.left != nil{ return

Java資料結構:中根次序排序

        昨天離開了創新創業基地,有點難受,雖然換來了高效,但是總覺的難受,一起度過了半年,昨天離開了。 說正事,今天更新二叉排序樹的中根遍歷。         思想:其實沒啥,類似與二叉樹的非遞迴中

基礎操作 ,前中後序,求高度,搜尋排序)Java實現 程式碼集合

首先,定義一個樹類Tree.java public class Tree { public TreeNode root; } 定義樹節點類TreeNode.java public class TreeNode { public TreeNode(int

關於排序的插入,高度,

 首先定義一課樹和結點 #include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node* left; struct node* right; }N

【資料結構週週練】022 從大到小輸出排序中小於某個值的所有結點編號資料

一、二叉排序樹 今天給大家分享的是二叉排序樹的應用,從大到小輸出二叉排序樹中小於某個值的所有結點編號及資料。 我們知道,我們做中序遍歷時,先訪問左子樹,再訪問根節點,最後訪問右子樹;通過中序遍歷會得到一個遞增的序列。該應用要求得到從大到小,一個遞減的序列,我們可以通過先訪

排序的構造、深度優先、廣度優先

        之前面試官總是會問到二叉樹的遍歷,自己回答的很不好。甚至可以說想都想不起來。真的應了老師應常說的那句話,你們學的東西都還給老師了啊。。。這兩天在看mysql優化的時候看到了B樹,然後去查閱B樹的知識,又知道B樹又跟二叉排序樹脫不了關係。於是

應用

二叉樹遍歷  public class BinarayTree { Node<String> root; public BinarayTree(String data){ root=new Node<>(data,null,n

用java構建排序,實現先序,中序和後序

1.基礎知識: 先上圖,舉個例子: 先選遍歷的規則:根節點----左子樹----右子樹      結果為12-9-76-35-22-16-48-46-40-90 中序遍歷的規則:左子樹--

排序的基本操作(建立,中序,查詢,刪除,插入)

分析: 二叉排序樹的操作的難點在於刪除操作,刪除操作時,只需要滿足二叉排序樹的性質即可,即需要找到要刪除結點p的左孩子的最右下方的數替代該結點的資料,然後刪除p->lchild的最右下方的結點即可。 對於p->lchild==NULL的,只需要讓雙親結點直接指向

排序的建立和

   輸入一系列整數,建立二叉排序樹,並進行前序、中序、後序遍歷。 #include <iostream> using namespace std; #include <stdio.h> #include <stdlib.h> typ

【資料結構表的查詢】排序詳解和程式碼(生成、插入、查詢、最大值、最小值、刪除、中序、銷燬)

二叉排序樹(簡稱BST)又稱二叉查詢(搜尋)樹,其定義為:二叉排序樹或者是空樹,或者是滿足如下性質的二叉樹:       (1)若它的左子樹非空,則左子樹上所有記錄的值均小於根記錄的值;       (2)若它的右子樹非空,則右子樹上所有記錄的值均大於根記錄的值;     

排序的建立、插入、刪除、查詢、4種 C++完整實現

#include<iostream> #include<string> #include<queue> using namespace std; typedef int KeyType; #define NUM 13 class Bi

建立排序_三種順序

str 空格 -- 一行 amp oot std new clu 題目描述 輸入一系列整數,建立二叉排序樹,並進行前序,中序,後序遍歷。 輸入描述: 輸入第一行包括一個整數n(1<=n<=100)。 接下來的一行包括n個整數。 輸出描述: 可能有多組測試數據,對

排序的建立以及

可能有多組測試資料,對於每組資料,將題目所給資料建立一個二叉排序樹,並對二叉排序樹進行前序、中序和後序遍歷。每種遍歷結果輸出一行。每行最後一個數據之後有一個空格。輸入中可能有重複元素,但是輸出的二叉樹遍歷序列中重複元素不用輸出。 (adsbygoogle = window.adsby

排序的建立與

二叉排序樹其實是一種排列方式,現在給定一系列的數,通過建立一個二叉樹,然後對二叉樹進行中序遍歷即可對二叉樹從小到大進行排列。 二叉樹大小節點大小:左節點的資料<根節點的資料<右節點的資料 1.定義二叉樹資料結構 我們採用int型別的作為節點內容 typedef