単純なツリーソートアルゴリズム
17730 ワード
今日出勤する時任務を手配していないで、私はデータの構造を取って会議を見て、とても良い感じがします.前にも見たことがありますが、読めなくて分かりにくいです.大学4年生は1年javaを独学して、卒业后またc++を使って1年になって、たとえこの半年书くコードが比较的に多いとしても、前にjavaとvc++を使ってすべてクラスライブラリを使っているかもしれなくて、この半年は1つのコードの量の蓄积があって、自己感覚はやはり以前より多く向上しました.もちろんみんなから見ればとても料理です.午后は二叉の木を见て、前に二叉の木について少し知ったことがあります.まず本を読まないで、まず一つ整えてから本を読みに行きたいと思っています.そうすれば、本が読みやすくなります.みんながこのような体得をしたことがあるかどうか分からないが、一部のコードは自分で見ると頭が痛いが、似たようなものを書いたことがあるか、いっそこのプログラムを実現させたことがある.あなたが書いた重点は、頭を働かせて考えた後、他の人が書いた同じ機能のコードを見て、すぐに理解することができる.
くどくどしない.うちの会社にはプロジェクトマネージャーがいます.菜鳥は普通書いたコードを貼っています.牛人はみな高論をまとめています.私は今菜鳥しかできません.
くどくどしない.うちの会社にはプロジェクトマネージャーがいます.菜鳥は普通書いたコードを貼っています.牛人はみな高論をまとめています.私は今菜鳥しかできません.
/**
: 。
, , 。
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//
struct BinaryTree{
int number;
struct BinaryTree* left;
struct BinaryTree* right;
};
// 。 , 。
int print_arr(int *p, int n)
{
if(0 == p || 0 == n)
{
printf("Array is null!");
return -1;
}
int i = 0;
for(; i<n; i++)
{
printf("%3d ", p[i]);
if(i%10 == 9)
{
printf("
");
}
}
if(i%10 != 9)
{
printf("
");
}
return 0;
}
// 。 , , 。
void print_binarytree(struct BinaryTree* bt)
{
if(bt == 0)
{
return ;
}
//
if(bt->left != 0)
{
print_binarytree(bt->left);
}
//
printf("%3d ",bt->number);
//
if(bt->right != 0)
{
print_binarytree(bt->right);
}
return ;
}
// 。
int array_to_binarytree(int *p, int n, struct BinaryTree* root)
{
if(0 == p || n == 0)
{
printf("Array is null!
");
return -1;
}
root->number = p[0];
root->left = 0;
root->right = 0;
struct BinaryTree *temp = 0;
for(int i=1; i<n; i++)
{
temp = root;
struct BinaryTree* t = (struct BinaryTree*)malloc(sizeof(struct BinaryTree));
t->number = p[i];
t->left = 0;
t->right = 0;
while(temp != 0)
{
if(t->number > temp->number)
{
if(temp->right == 0)
{
temp->right = t;
break;
}
else
{
temp = temp->right;
}
}
else
{
if(temp->left == 0)
{
temp->left = t;
break;
}
else
{
temp = temp->left;
}
}
}
}
return 0;
}
int main()
{
int a[5] = {3,5,1,8,4};
print_arr(a,5);
// ,
struct BinaryTree* root=(struct BinaryTree*)malloc(sizeof(struct BinaryTree));
// 。
array_to_binarytree(a,5,root);
//
print_binarytree(root);
free(root);
puts("");
return 0;
}