当前位置: 首页 > news >正文

长沙做网站哪里好搜索技巧

长沙做网站哪里好,搜索技巧,win2008 iis7创建网站,wordpress ico 上传目录 一、二叉树的基础操作 二、二叉树代码图解 2.1 遍历 2.2 求大小 2.3 创建与销毁 2.4 与队列结合解决问题 三、二叉树C语言源码汇总 二叉树的代码实现运用了函数递归的思想,了解函数递归的知识请见博主的另一篇博客: http://t.csdnimg.cn/Po…

目录

一、二叉树的基础操作

二、二叉树代码图解

2.1 遍历

2.2 求大小

2.3 创建与销毁

2.4 与队列结合解决问题

三、二叉树C语言源码汇总


二叉树的代码实现运用了函数递归的思想,了解函数递归的知识请见博主的另一篇博客:

http://t.csdnimg.cn/PoMtd

一、二叉树的基础操作

typedef int BTDataType;typedef struct BinaryTreeNode
{BTDataType data; // 当前结点值域	struct BinaryTreeNode* left; // 指向当前节点左孩子struct BinaryTreeNode* right; // 指向当前节点右孩子
}BTNode;//创建二叉树
BTNode* CreatBinaryTree();
//前序遍历
void PrevOrder(BTNode* root);
//中序遍历
void InOrder(BTNode* root);
//后序遍历
void PostOrder(BTNode* root);
//结点个数
int	TreeSize(BTNode* root);
//叶子结点个数
int TreeLeafSize(BTNode* root);
//二叉树高度
int TreeHeight(BTNode* root);
//二叉树第k层结点个数
int TreeLevelKSize(BTNode* root, int k);
//二叉树查找值为x的结点
BTNode* TreeFind(BTNode* root, int x);
// 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树
BTNode* CreateTree(char* a, int* pi);
//二叉树的销毁
void BinaryTreeDestory(BTNode* root);
// 判断二叉树是否是完全二叉树
bool BinaryTreeComplete(BTNode* root);
//层序遍历
void TreeLevelOrder(BTNode* root);

二、二叉树代码图解

2.1 遍历

详见博主的另一篇博客:http://t.csdnimg.cn/YnlIr

2.2 求大小

详见博主的另一篇博客:http://t.csdnimg.cn/Ce2Fs

2.3 创建与销毁

详见博主的另一篇博客:http://t.csdnimg.cn/LXt8P

2.4 与队列结合解决问题

详见博主的另一篇博客:http://t.csdnimg.cn/zbNis

三、二叉树C语言源码汇总

BTNode* BuyNode(int x)
{BTNode* node = (BTNode*)malloc(sizeof(BTNode));if (node == NULL){perror("malloc fail");return NULL;}node->data = x;node->left = NULL;node->right = NULL;return node;
}
//手动造树(测试用)
BTNode* CreatBinaryTree()
{BTNode* node1 = BuyNode(1);BTNode* node2 = BuyNode(2);BTNode* node3 = BuyNode(3);BTNode* node4 = BuyNode(4);BTNode* node5 = BuyNode(5);BTNode* node6 = BuyNode(6);BTNode* node7 = BuyNode(7);node1->left = node2;node1->right = node4;node2->left = node3;node4->left = node5;node4->right = node6;node5->right = node7;return node1;
}
//前序遍历
void PrevOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}printf("%d ", root->data);PrevOrder(root->left);PrevOrder(root->right);
}
//中序遍历
void InOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);printf("%d ", root->data);InOrder(root->right);
}
//后序遍历
void PostOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}PostOrder(root->left);PostOrder(root->right);printf("%d ", root->data);
}
//结点个数
int TreeSize(BTNode* root)
{if (root == NULL){return 0;}return TreeSize(root->left) + TreeSize(root->right) + 1;
}
//叶子结点个数
int TreeLeafSize(BTNode* root)
{if (root == NULL){return 0;}if (root->left == NULL && root->right == NULL){return 1;}return TreeLeafSize(root->left) + TreeLeafSize(root->right);}
//二叉树高度
int TreeHeight(BTNode* root)
{if (root == NULL){return 0;}int leftHeight = TreeHeight(root->left);int rightHeight = TreeHeight(root->right);return leftHeight > rightHeight ?leftHeight + 1 : rightHeight + 1;
}
//求第K层的节点数目
int TreeLevelKSize(BTNode* root, int k)
{if (root == NULL){return 0;}if (k == 1){return 1;}return TreeLevelKSize(root->left, k - 1) + TreeLevelKSize(root->right, k - 1);
}
//查找值为x的节点
BTNode* TreeFind(BTNode* root, int x)
{if (root == NULL){return NULL;}if (root->data == x){return root;}BTNode* ret1 = TreeFind(root->left, x);if (ret1){return ret1;}BTNode* ret2 = TreeFind(root->right, x);if (ret2){return ret2;}return NULL;
}
// 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树
BTNode* CreateTree(char* a, int* pi)
{if (a[*pi] == '#'){(*pi)++;return NULL;}BTNode* root = (BTNode*)malloc(sizeof(BTNode));if (root == NULL){perror("malloc");exit(1);}root->data = a[(*pi)++];root->left = CreateTree(a, pi);root->right = CreateTree(a, pi);return root;
}
//二叉树的销毁
void BinaryTreeDestory(BTNode* root)
{//判空if (root == NULL){return NULL;}//释放左子树BinaryTreeDestory(root->left);//释放右子树BinaryTreeDestory(root->right);//释放本身结点free(root);
}
//层序遍历
void TreeLevelOrder(BTNode* root)
{Queue q;QueueInit(&q);if (root){QueuePush(&q, root);}while (QueueEmpty(&q)==false){BTNode* front = QueueFront(&q);QueuePop(&q);printf("%d ", front->data);if (front->left){QueuePush(&q, front->left);}if (front->right){QueuePush(&q, front->right);}}QueueDestroy(&q);
}
//判断二叉树是否是完全二叉树
bool BinaryTreeComplete(BTNode* root)
{Queue q;QueueInit(&q);if (root != NULL){QueuePush(&q, root);}//入队遇到空停止入队while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);QueuePop(&q);if (front == NULL){break;}QueuePush(&q, front->left);QueuePush(&q, front->right);}//判断后面是否还有非空while (!QueueEmpty(&q)){BTNode* front = QueueFront(&q);QueuePop(&q);if (front != NULL){return false;}}QueueDestroy(&q);return true;
}

http://www.yidumall.com/news/46467.html

相关文章:

  • 做国际黄金看什么网站优化设计七年级下册数学答案
  • 网站建设公司哪家好 都来磐石网络企业如何进行搜索引擎优化
  • 国内做彩票网站违法么系统优化的意义
  • 建了网站但是百度搜索不到杭州网络优化公司排名
  • php做电商网站福州今日头条新闻
  • 网站运营年度推广方案360优化大师官方网站
  • 项目外包流程seo顾问公司
  • 嘉兴企业网站排名优化郑州关键词网站优化排名
  • 南昌做网站设计长沙百度网站推广
  • 虚拟主机可以做视频视频网站吗谷歌海外推广
  • web项目电商网站开发实战(1)免费网站建设哪个好
  • 三网合一网站建设合同百度地图推广怎么收费标准
  • 泉州网站设计招聘网seo客服
  • 电子商务的网站建设过程优化seo是什么
  • 南昌网站优化引擎优化seo
  • 海外医疗网站建设nba哈登最新消息
  • app免费制作自助工厂重庆做优化的网络公司
  • 西安专业网站开发公司推广代理公司
  • 招聘网站毕业设计百度关键词优化排名
  • 万户网站建设公司如何做平台推广赚钱
  • 微网站开发平台案例nba最新交易信息
  • wordpress找不到页面内容编辑油烟机seo关键词
  • wordpress注册页模板下载怎样优化网络
  • 网站界面一般用什么软件做网站自然排名怎么优化
  • 谁做的新闻网站比较好seo小白入门
  • wordpress企业仿站百度小说风云榜
  • 西安网站维护招聘济南计算机培训机构哪个最好
  • 做业务员要认识什么批发网站发布悬赏任务的推广平台
  • 网站如何添加统计代码是什么新网站推广方案
  • 国家高职示范校建设网站网站制作专业