算法不会,尚能饭否之对分查找二叉树(又为快速排序之二叉树实现)

      快速排序,可以以数组的形式实现,也可以用二叉树的形式实现,而我的这篇博文,正好

 

讲的是用二叉树的形式实现的。这种二叉树,又叫对分查找二叉树,在实际的应用中是不胜枚

 

举的。废话少说,代码贴上,算法比较简单,我也就不过多的浪费口舌。

#include using namespace std; //定义节点结构 struct Node { //初始化节点值 Node() { left = NULL; right = NULL; } int value; Node* left; Node* right; }; void CreateBinary_Search_Tree(Node*&, int); //建立对分二叉树 void InsertNode(Node*, Node*); //遍历插入节点 void Inorder(Node*); //中序输出二叉树函数值 int Height(Node*); //求二叉树的深度 int getNodeNum(Node*); //求二叉树的节点个数 //main int main() { Node *root = NULL; int date; cout<<"请输入根节点值:"; cin>>date; //建立对分查找二叉树 while (date != -1) { CreateBinary_Search_Tree(root, date); cout<<"请输入子节点值:"; cin>>date; } //中序遍历输出二叉树结果 Inorder(root); cout<value = date; //为空树 if (root == NULL) { root = temp; return; } InsertNode(root, temp); } void InsertNode(Node* root, Node* temp) { if (temp->value < root->value) { if (root->left == NULL) { root->left = temp; } else { InsertNode(root->left, temp); } } else { if (root->right == NULL) { root->right = temp; } else { InsertNode(root->right, temp); } } } //中序遍历对分查找二叉树 void Inorder(Node* root) { if (root != NULL) { Inorder(root->left); cout<value<<" "; Inorder(root->right); } } //求对分查找二叉树的深度 int Height(Node* root) { if (root == NULL) { return 0; } else { int height = 1 + max(Height(root->left), Height(root->right)); return height; } } //求对分查找二叉树的节点个数 int getNodeNum(Node* root) { if (root == NULL) { return 0; } else { int num = 1 + getNodeNum(root->left) + getNodeNum(root->right); return num; } }

 

 

好了,如果有问题,在下方给我留言就ok了。

转载于:https://www.cnblogs.com/JPAORM/archive/2011/03/20/2509898.html

你可能感兴趣的:(算法不会,尚能饭否之对分查找二叉树(又为快速排序之二叉树实现))