二叉树遍历的本质:先序中序后序遍历:每个结点都要被“访问”3次,只是访问的时机不同。

typedef struct BiTNode //二叉链表
{int data;struct BiTNode *lchild, *rchild; //左孩子 右孩子
}BiTNode, *BiTree;void PreOrder(BiTNode* T)//先序遍历二叉树
{if(T!=NULL){printf("%d\n",T->data);PreOrder(T->lchild);PreOrder(T->rchild);}
}

遍历是绝大多数二叉树操作的前提

//求总结点个数
//访问结点,结点不为空,则g_count++
int count = 0;
void CountLeaf(BiTree T)  //二叉树总结点数目
{if(T != NULL){count++;count_1(T->lchild);count_1(T->rchild);}
}
-----------------------------------------------------------------------
//求叶子结点总个数
//访问结点,结点不为空的前提下,再判断该结点是否为叶子,如果是,g_count++
int g_count = 0;
void CountLeaf(BiTNode *T) //二叉树叶子结点总数目
{if (T != NULL){CountLeaf(T->lchild);CountLeaf(T->rchild);if (T->lchild == NULL && T->rchild == NULL){g_count ++;}}
}
----------------------------------------------------------------------
//求二叉树的深度
int Depth(BiTNode* T)
{int depth_L = 0,depth_R = 0;if(T == NULL)  //如果树根T是空return 0;else{depth_L = 1+Depth(T->lchild); //1+左子树的树深depth_R = 1+Depth(T->rchild); //1+右子树的树深return depth_L>depth_R?depth_L:depth_R;  }
}
/*  二叉树复制  */
BiTNode* copyBiTree(BiTNode* T)
{if(T == NULL)return NULL;else{BiTNode* pNew= (BiTNode*)malloc(sizeof(BiTNode));pNew->data = T->data;pNew->lchild = copyBiTree(T->lchild);pNew->rchild = copyBiTree(T->rchild);return pNew;}
}
-------------------------------------------------------
//二叉树的创建(先序+字符串AB#D##CE#F### )
BiTNode* create_Tree()
{char ch;scanf("%c",&ch);if(ch == '#')return NULL;else{BiTNode *pNew = new BiTNode;pNew->data = ch;pNew->lchild = create_Tree();pNew->rchild = create_Tree();return pNew;}
}
//输入: AB#D##CE#F###
//先序遍历结果:ABDCEF
遗留问题:二叉树的插入二叉树的创建二叉树的删除二叉树的查找线索二叉树先序中序后序层序--->非递归遍历二叉树

第十一天2017/04/25(1、二叉树)相关推荐

  1. 【2017.04.25】蘑菇街一面面经

    面试时间:2017.4.25  18:00 面试地点:视频面试 面试时长:45分钟 面试岗位:后端开发工程师 1.自我介绍+项目介绍 2.hashmap的哈希冲突是怎样避免的 3.hashmap.ha ...

  2. 第十天2017/04/25(2、企业财富库:)

    视频:2014.05.16 "双向链表" "栈:顺序栈.链栈" "队列:顺序队.链队"

  3. HPatches A benchmark and evaluation of handcrafted and learned local descriptors——2017.04

    Image Processing and Computer Vision_Review:HPatches A benchmark and evaluation of handcrafted and l ...

  4. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  5. pycharm 2017年5月注册码(2017.4.25更新)

    注册码方式 注意,需要在hosts中添加: 0.0.0.0 account.jetbrains.com pycharm 2017 注册码(2017.4.25更新),其余注册码已失效 CNEKJPQZE ...

  6. Onscripter for Android 04.25 更新!

    Onscripter for Android 04.25 更新! 上班前更新,今天签约,祝我好运~ 感谢natdon(Android galgame 研究组)的修改! 04.25版更新内容如下: 1. ...

  7. wifi共享精灵2014.04.25.001已经更新,wifi热点中文名走起!

    五一回来后,有个惊喜,wifi共享精灵有了最新动向.不晓得wifi共享精灵是啥的朋友,我来解释下,它就相当于一个无线路由器.说起来,Wifi共享精灵正式版2014.04.25.001(http://w ...

  8. (学习日记)2023.04.25

    写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈. 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈. 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录, ...

  9. 2017.11.25 计算机一级,2017计算机一级MSOffice考试试题

    2017计算机一级MSOffice考试试题 (16)十进制数59转换成二进制整数是 A)0110011 B)0111011 C)0111101 D)0111111 (17)根据汉字国标GB 2312- ...

最新文章

  1. 阿里云视频点播获取视频点播的video信息
  2. vasp安装包_【问题集锦】VASPamp;MedeA 第十一期
  3. 微信小程序 时间选择
  4. matlab作业1参考答案,matlab课后习题答案1到6章
  5. 【Java】NIO中Selector的select方法源码分析
  6. 使用python获取CPU和内存信息的思路与实现(linux系统)
  7. [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)
  8. 男子吐槽:为什么那么多人不喜欢996,非要年纪轻轻进国企养老
  9. 苹果收购人工智能初创公司Voysis以改善语音助手Siri功能
  10. PHP如何在微信中聊天_迷你微信私有聊天系统PHP源码支持PC、移动APP
  11. arm-linux-gcc 命令未找到问题
  12. 宠物火葬行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  13. list,set,map,数组之间的相互转换详细解析
  14. 在一个windows服务下,安装多个mysql服务。
  15. java jdbc 表存在_JDBC / Java – 如何检查数据库中是否存在表和列?
  16. 浅谈Android五大布局(一)——LinearLayout、FrameLayout和AbsoulteLayout
  17. 应用:文件夹copy器(多进程版)
  18. java贝塞尔函数插值_空间插值分析算法综述
  19. 锐捷网关交换机开启dhcp服务
  20. 怎么快速解决dns被劫持问题?

热门文章

  1. mysql表名查询sql
  2. zookeeper源码分析之四服务端(单机)处理请求流程
  3. 机器学习Sklearn实战——其他线性模型
  4. 【模型迭代】模型迭代
  5. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试
  6. 第一章 Web MVC简介 —— 跟开涛学SpringMVC
  7. 单片机large模式_对单片机存储分配新的认识
  8. Visual Studio 2013开发 mini-filter driver step by step (3) - 查看运行结果
  9. 并发编程-24 高并发处理手段之扩容思路 + 缓存思路
  10. Spring Cloud【Finchley】-04使用Ribbon实现客户端负载均衡