二叉排序樹(面試四)

2021-07-13 09:40:24 字數 1132 閱讀 2159

/*

面試(四)

開發環境:visual studio 2008

開發語言:c語言

要 求:

下列程式中的treesort函式功能:對任意已存在的二叉樹進行排序後生成乙個新的二叉排序樹。 優化treesort函式:實現對任意已存的二叉樹進行排序(不允許在其過程中生成新樹)。

時 間:15-20分鐘

得分標準:

考核標準: 口述演算法思路不清晰者(0分)

考核小組:張一濤

批註評語:

#include #include typedef struct btree

tree;

char data[100];

int k=0;

tree *createtree(tree *root,char *str)

else

if(str[i]==')')

top--;

else

if(str[i]==',')

k=2;

else}}

return root;

}void inorder(tree *r)

if(top!=-1)

}}void freetree(tree *r)

}void outputbylayer(tree *r)

printf("\n");

high++;

}printf("the tree is node:%d\n",last);

printf("the tree is high:%d\n",high);

data[k]='\0';

}tree *treesort(tree *r)

for(i=1;idata=data[i];

t->lchild=null;

t->rchild=null;

p=r;

q=r;

while(p!=null)

if(t->datadata)

}if(flag==0)

q->lchild=t;

else

q->rchild=t;

}return r;

}void main()

二叉排序樹

在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...

二叉排序樹

name 二叉排序樹相關操作 author unimen date 2011 10 8 13 14 21 刪除結點比較麻煩,總結如下 4大種情況 1 結點p無右孩子 將該點的左孩子變為其在雙親中的同位孩子 1 p為其雙親的左孩子時將其的左孩子變為雙親的左孩子 2 p為其雙親的右孩子時將其的左孩子變為...

二叉排序樹

include include include include struct tree node void insert node struct tree node int void pre order struct tree node void in order struct tree node ...