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

网站开发新技术探索什么网站可以免费发广告

网站开发新技术探索,什么网站可以免费发广告,网站建设山西,wordpress分类翻页404初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针…

初识二叉树 二

  • 实现链式结构二叉树
    • 前中后序遍历
      • 遍历规则
      • 代码实现
    • 结点个数以及高度等
    • 层序遍历
    • 判断是否为完全二叉树

实现链式结构二叉树

⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩⼦和右孩⼦所在的链结点的存储地址,其结构如下:

typedef int BTDataType;
// ⼆叉链
typedef struct BinaryTreeNode
{struct BinTreeNode* left; // 指向当前结点左孩⼦ struct BinTreeNode* right; // 指向当前结点右孩⼦ BTDataType val; // 当前结点值域 
}BTNode;

前中后序遍历

前中后序遍历,均用到函数的递归,因此代码量虽小,却能够帮助我们充分理解递归的思想。

遍历规则

按照规则,⼆叉树的遍历有:前序/中序/后序的递归结构遍历:
1)前序遍历(Preorder Traversal 亦称先序遍历):访问根结点的操作发⽣在遍历其左右子树之前
访问顺序为:根结点、左子树、右子树
2)中序遍历(Inorder Traversal):访问根结点的操作发⽣在遍历其左右子树之中(间)
访问顺序为:左子树、根结点、右子树
3)后序遍历(Postorder Traversal):访问根结点的操作发⽣在遍历其左右子树之后
访问顺序为:左⼦树、右⼦树、根结点

代码实现

void PreOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}printf("%d ", root->val);PreOrder(root->left);PreOrder(root->right);
}
void InOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);printf("%d ", root->val);InOrder(root->right);
}
void PostOrder(BTNode* root)
{if (root == NULL){printf("N ");return;}InOrder(root->left);InOrder(root->right);printf("%d ", root->val);
}

结点个数以及高度等

// ⼆叉树结点个数 
int BinaryTreeSize(BTNode* root); 
// ⼆叉树叶⼦结点个数 
int BinaryTreeLeafSize(BTNode* root); 
// ⼆叉树第k层结点个数 
int BinaryTreeLevelKSize(BTNode* root, int k); 
//⼆叉树的深度/⾼度
int BinaryTreeDepth(BTNode* root);
// ⼆叉树查找值为x的结点 
BTNode* BinaryTreeFind(BTNode* root, BTDataType x);
// ⼆叉树销毁
void BinaryTreeDestory(BTNode** root);

层序遍历

除了先序遍历、中序遍历、后序遍历外,还可以对⼆叉树进⾏层序遍历。设⼆叉树的根结点所在层数为1,层序遍历就是从所在⼆叉树的根结点出发,⾸先访问第⼀层的树根结点,然后从左到右访问第2层上的结点,接着是第三层的结点,以此类推,⾃上⽽下,⾃左⾄右逐层访问树的结点的过程就是层序遍历实现层序遍历需要额外借助数据结构:队列
在这里插入图片描述

// 层序遍历
void LevelOrder(BTNode* root)
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);printf("%c ", top->data);QueuePop(&q);if (top->_left) {QueuePush(&q, top->_left);}if (top->_right) {QueuePush(&q, top->_right);}}QueueDesTroy(&q);
}

判断是否为完全二叉树

// 判断⼆叉树是否是完全⼆叉树
bool BinaryTreeComplete(BTNode* root) 
{Queue q;QueueInit(&q);QueuePush(&q, root);while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top == NULL) {break;}QueuePush(&q, top->_left);QueuePush(&q, top->_right);}while (!QueueEmpty(&q)){BTNode* top = QueueFront(&q);QueuePop(&q);if (top != NULL) {QueueDesTroy(&q);return false;}}QueueDesTroy(&q);return true;
}
```利用了队列的方法,将二叉树进行遍历,一旦在NULL后找到非空元素,说明该二叉树非完全二叉树,若全不为空,或剩下的全为空时,说明为完全二叉树,但有一点需要判断该队列是否为空。
http://www.yayakq.cn/news/10810/

相关文章:

  • 深圳品牌创意网站建设重要新闻头条
  • 南昌seo网站建设企业网站有什么用
  • 长春百度网站优化厦门建设工程招标中心网站
  • 班级网站做哪些方面开发网站开票名称是什么原因
  • 潍坊网站建设招聘佛山做优化的公司
  • 一个人能建设一个公司网站吗南阳网站开发公司
  • 网站代发怎么做网上查询个人房产信息
  • 深圳网站设计 公司环保类网站模板免费下载
  • 黑龙江省建设厅网站金融网站开发文档
  • 网站制作 客户刁难六枝做网站
  • 内江规划建设教育培训中心网站戴尔网站建设的目的
  • 房子信息查询网站入口免费软件大全网址
  • 河北做wap网站高端网站建设 工业
  • 舟山市定海区建设规划局网站潜江 网站建设
  • 海宁做网站成品网站货源1
  • 重庆建设注册执业中心网站开发一个小程序游戏要多少钱
  • 做电商网站都需要学什么项目网发布信息平台
  • 去公司叫自己做网站不会做长沙弧度seo
  • 霞山手机网站建设公司婚纱官网
  • 南京建设集团网站金华企业做网站
  • 高端营销型企业网站建设建网站算法
  • 网站开发人员调试五大类型网站
  • 电子商务网站建设指导书家具行业做那个国际网站比较好
  • 做外贸网站外包单页设计费一般多少钱
  • 网站一级栏目网站编程 mysql
  • 购物网站开发可行性分析怎么写做网站 页面自适应
  • 公司网站模版 dedecms徐州泉山区建设局网站
  • 企业门户网站建设的意义建筑工程查询网
  • 知名seo网站优化公司社交营销
  • 石家庄网站建设王道下拉棒如何做网站吸引广告商