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

北京专业做网站电话长沙口碑好网站建设公司

北京专业做网站电话,长沙口碑好网站建设公司,做简单网站需要学什么软件有哪些,网络营销推广的三板斧二叉树 二叉树不能轻易用断言,因为树一定有空 二叉树链式结构的实现 在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType _data;struct B…

二叉树

二叉树不能轻易用断言,因为树一定有空

二叉树链式结构的实现

在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。
typedef int BTDataType;
typedef struct BinaryTreeNode
{BTDataType _data;struct BinaryTreeNode* _left;struct BinaryTreeNode* _right;
}BTNode;
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);node1->_left = node2;node1->_right = node4;node2->_left = node3;node4->_left = node5;node4->_right = node6;return node1;
}

二叉树的遍历

前序、中序以及后序遍历

1. 前序遍历 (Preorder Traversal 亦称先序遍历 )— 访问根结点的操作发生在遍历其左右子树之前。
2. 中序遍历 (Inorder Traversal)—— 访问根结点的操作发生在遍历其左右子树之中(间)。
3. 后序遍历 (Postorder Traversal)—— 访问根结点的操作发生在遍历其左右子树之后。
由于被访问的结点必是某子树的根, 所以 N(Node )、 L(Left subtree )和 R(Right subtree )又可解释为 根,根的左子树和根的右子树 NLR LNR LRN 分别又称为先根遍历、中根遍历和后根遍历。
// 二叉树前序遍历
void PreOrder(BTNode* root);
// 二叉树中序遍历
void InOrder(BTNode* root);
// 二叉树后序遍历
void PostOrder(BTNode* root);

前序

递归图

中序

递归图

后序同理

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>typedef int BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;BTNode* BuyNode(BTDataType 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->left = 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);
}

层序遍历

层序遍历 :除了先序遍历、中序遍历、后序遍历外,还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1 ,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第 2 层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。
// 层序遍历
void LevelOrder(BTNode* root);

计算二叉树高度

分析

int BTreeHeight(BTNode* root)
{if (root == NULL)return 0;int leftHeight = BTreeHeight(root->left);int rightHeight = BTreeHeight(root->right);return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
}

计算结点个数

1

2递归求结点个数

//int size = 0;
//void BTreeSize(BTNode* root)
//{
//	if (root == NULL)
//		return;
//
//	++size;
//
//	BTreeSize(root->left);
//	BTreeSize(root->right);
//}int BTreeSize(BTNode* root)
{/*if (root == NULL)return 0;return BTreeSize(root->left)+ BTreeSize(root->right)+ 1;*/return root == NULL ? 0 : BTreeSize(root->left)+ BTreeSize(root->right) + 1;
}

求叶子结点个数

// 求叶子节点的个数
int BTreeLeafSize(BTNode* root)
{if (root == NULL){return 0;}if (root->left == NULL&& root->right == NULL){return 1;}return BTreeLeafSize(root->left)+ BTreeLeafSize(root->right);
}

计算第k层结点个数

// 二叉树第k层结点个数
int BTreeLevelKSize(BTNode* root, int k)
{assert(k > 0);if (root == NULL)return 0;if (k == 1)return 1;return BTreeLevelKSize(root->left, k - 1)+ BTreeLevelKSize(root->right, k - 1);
}

http://www.yayakq.cn/news/236870/

相关文章:

  • 网站开发概述wordpress post提交
  • 三站一体网站公司wordpress文章保存
  • php多语言网站怎么做个人电脑可以做网站服务器
  • 教做吃的网站做新闻h5网站
  • 企石网站建设网站建设内部风险分析
  • 十大免费ae模板网站网站开发维护岗位职责
  • 佛山网站建设业务员网页设计和网站建设的课程设计
  • 男女做暖暖的网站大全高校专业建设网站
  • 校园二手网站设计论文保健品商城网站模板
  • 在哪里找个人做网站的珠宝怎么做网站
  • 微网站模板建设网站建设报价ppt模版
  • 东城网站建设南充手机网站建设
  • 查重网站开发网站开发后台框架
  • 商务网站开发与建设论文新闻有哪些网站有哪些类型
  • 国外创意海报设计网站建设银行假网站首页
  • 彩票资料网站怎么做微九州合作网站
  • 网站2019建设目标WordPress手机文章缩略图
  • 北京高端网站建设费用一个做flash的网站
  • 学习建网站玩网站建设学习自学网站建设需要什么学历
  • 太原网站公司网站开发安卓开发
  • 织梦模仿网站视频阿里云的网站建设花钱么
  • 社保扣款怎么在社保网站上做》做学校和企业对接的网站
  • 自助建站免费搭建个人网站网站按域名跳转不同的页面
  • 如何在工商局网站做身份确认铁岭做网站
  • 注册一个网络公司需要多少钱如何做营销型手机网站优化
  • 查询网站最新域名自己可以做门户网站吗
  • 网站模板中企动力在哪买网站空间
  • 从哪里可以建公司网站在那里做网站
  • 竹子建站怎么赚钱晋江论坛手机版
  • 长沙建站优化深度苏州自媒体公司