c語言 二叉排序樹 100分

2025-04-04 21:05:18 字數 2850 閱讀 5961

1樓:匿名使用者

class tree

private:

node *root; /樹根。

ofstream outfile; /輸出流。

public:

tree() 建構函式,用來初始化樹根。

tree(){解構函式。

建立二叉樹。

void print(node *root,ofstream outfile); 輸出。

void destory(node *root); 刪除root

建立二叉樹。

node *temp,*backtemp; /定義當前指標和拖後吵槐指標。

if(root==0) /定義樹根。

root=new node;

root->lchild=root->rchild=0;

root->汪碧data=data;

root->number=number;

elsetemp=root;

while(temp!=0)

backtemp=temp;

if(number>(temp->number))

temp=temp->lchild;

else temp=temp->rchild;

if(number>(backtemp->number))

node *newdode = new node;

newdode->lchild=newdode->rchild=0;

newdode->data=data;

newdode->number=number;

backtemp->lchild=newdode;

elsenode *newdode = new node;

newdode->lchild=newdode->rchild=0;

newdode->data=data;

newdode->number=number;

backtemp->rchild=newdode;

輸出二叉樹,按公升陵友照中序遍歷。

void tree::print(node *root,ofstream outfile)

if(root!=0)

print(root->lchild,outfile);

outfile outfile rchild,outfile);

void tree::destory(node *root)

二叉排序樹建立遍歷c語言實現?

2樓:潘達

這東西網上隨便查,沒必要來著問。。。

誰有c語言二叉排序樹構造和插入的演算法**(有**分析就最好了),

3樓:將影瀟湘

#include

#include

struct tree

int data;

tree * left;

tree * right;

void insert(tree **h,int item) /左邊放相對小的,右邊放相對大的。

if((*h)==null) /租基粗/當前節點為空,則找到了當前值應該放置的位置。

tree * p=(tree *)malloc(sizeof(tree));

p->left=p->right=null;

p->data=item;

h)=p;else if((*h)->dataright),item); 如果當前值大於當前節點的值,則向右走。

elseinsert(&(h)->left),item); 如果當前值小於當前節點的值,則向左走弊鎮。

void zx(tree * h) /保證先輸鋒冊出左邊 在輸出中間 再輸出右邊。

if(h!=null)

zx(h->left);

printf("%d ",h->data);

zx(h->right);

void main()

tree * p=null;

int n;

scanf("%d",&n); 輸入資料個數。

for(int i=1;i<=n;i++)

int a;

scanf("%d",&a);

insert(&p,a);

zx(p); 中序遍歷。

不遞迴的絕對不清晰明瞭。

用c語言實現二叉排序樹排序,並按遞減順序列印各個資料

4樓:匿名使用者

#include

#include

typedef int keytype;

typedef char infotype[10];

typedef struct node //記錄型別。

bstnode;

else if (k==p->key) //樹中存在相同關鍵字的結點,返回0

return 0;

else if (kkey)

return insertbst(p->lchild,k); //插入到*p的左子樹中。

elsereturn insertbst(p->rchild,k); //插入到*p的右子樹中。

bstnode *createbst(keytype a,int n) //返回bst樹根結點指標。

void main()

bt=createbst(a,n);

dispindescrease(bt);

/已上機驗證成功。

c語言資料結構(二叉排序樹的建立及查詢演算法)

5樓:網友

修改此處,理由:引用型操作。

8在二叉排序樹中插入結點的平均時間複雜度為

平均的時間復bai雜度在 duo logn 到o n 之間。因為二叉排序樹是在zhi查詢過程中dao,當樹中不存內在關鍵字等於給定值的結容點時再進行插入。新插入的結點一定是一個新新增的葉子結點,並且是查詢不成功時查詢路徑上訪問的最後一個結點的左孩子或右孩子結點。因此二叉排序樹插入時間複雜度最大為o ...

C語言二叉樹遞迴演算法怎麼做?什麼是二叉樹的遞迴?

include include struct treenode typedef treenode bitree void visit treenode node 結點總數。int node bitree t return node t left node t right 1 前序。void preo...

c語言二叉樹題目 一棵二叉樹有度為1的結點,t個度為2的結點,則該二叉樹有幾個結點

任意二叉樹度為0的結 點 葉子節點 總比度為2的結點多一個,t個度為2的結點,則專葉子節點為t 1個,加上1個根屬節點,總共10 2t 1,你是不是打錯了,不應該是t而是7啊?竭誠為您服務,很高興為您服務 在二叉樹中,有個公式 我們用nx表示度為x的結點的個數,那麼有n0 n2 1,那我們就有度為0...