C语言指针实现简单二叉排序树
来源:互联网 发布:用淘宝联盟赚钱安全吗 编辑:程序博客网 时间:2024/06/05 11:00
二叉排序树排序规则: 左节点 <= 根节点 <= 右节点
树节点:
typedef struct _node{ int data; struct _node *leftChild; struct _node *rightChild;}TreeNode;
操作:
//按照存储规则插入节点void insertNode(TreeNode **root, int data){ TreeNode *node = (TreeNode *) malloc(sizeof(TreeNode)); node->data = data; node->leftChild = NULL; node->rightChild = NULL; //1.树为空 //2.树不为空 if (*root == NULL) { *root = node; } else { TreeNode *current = *root; while (1) { if (current->data >= data) { if (current->leftChild == NULL) { current->leftChild = node; break; } else current = current->leftChild; } else { if (current->rightChild == NULL) { current->rightChild = node; break; } else current = current->rightChild; } } }}//中序遍历:左->根->右,按照从小到大顺序输出树void inOrder(TreeNode *node){ if(node != NULL) { inOrder(node->leftChild); printf("%d ",node->data); inOrder(node->rightChild); }}void endl(){ printf("\n");}//按照后序遍历(PostOrder)(左->右->根)的顺序释放节点内存void freeAll(TreeNode *node){ if(node->leftChild != NULL) freeAll(node->leftChild); if(node->rightChild != NULL) freeAll(node->rightChild); free(node);}int main(){ TreeNode *rootNode = NULL; insertNode(&rootNode, 1); insertNode(&rootNode, 2); insertNode(&rootNode, 3); insertNode(&rootNode, 2); insertNode(&rootNode, 3); insertNode(&rootNode, 98); insertNode(&rootNode, 13); inOrder(rootNode); endl(); insertNode(&rootNode, 6); insertNode(&rootNode, 13); insertNode(&rootNode, 6); insertNode(&rootNode, 54); insertNode(&rootNode, 44); inOrder(rootNode); endl(); freeAll(rootNode); return 0;}
小结:由于二叉排序树的规则,插入的节点保证严格有序,节点查找的时间复杂度在O(Log2N)~O(N)之间,故整体排序的时间复杂度在O(NLog2N)~O(N^2)之间
阅读全文
0 0
- C语言指针实现简单二叉排序树
- 二叉排序树 C语言实现
- C语言实现二叉排序树
- 创建二叉排序树C语言实现
- 二叉排序树C语言实现一
- 二叉排序树C语言实现二
- c语言:二叉排序树的实现
- C语言二叉排序树的实现
- C语言指针实现简单栈
- C语言指针实现简单队列
- 二叉排序树 遍历 ACM 试题 C语言实现
- C语言二叉排序树单词计数程序实现
- C语言实现二叉排序树的相关操作
- pascal语言实现二叉排序树
- 二叉排序树的简单实现
- 二叉排序树的简单实现
- 二叉排序树_Java简单实现
- 简单实现的二叉排序树
- Redis能干啥?细看11种Web应用场景
- 互联网分层架构的本质
- 树莓派禁止休眠、屏幕常亮
- [设计]观察者模式
- 图像中某点绕点旋转后的坐标,图像旋转坐标位置
- C语言指针实现简单二叉排序树
- Ubuntu搭建SFtp服务器
- idea设置字体大小
- [设计]命令模式
- 数论训练 {限制} [扩展gcd][组合数][容斥原理]
- 字母图形
- String、StringBuffer与StringBuilder之间区别
- [设计]适配器模式
- 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。