数据结构-二叉树

    科技2022-07-11  88

    先补习一下二叉树的知识吧(2020-10-3)

    二叉树是n个节点构成的集合,可以为空树也可以为非空树 /*空树就没有结点,非空树起码一个节点空树*/ 只有一个节点 /*只有一个父亲*/ 二叉树的独有特性: 1. 每个结点至多/*注意是至多*/只有两个结点,不存在度大于2的结点 2. 子树有左右之分,次序不可颠倒 /*说白了,和现在二胎政策很像,至多生两个,两个人还分大小次序一样*/

    二叉树的5种基本形态(来源于百度) 有两个很重要的概念:宽度和深度

    宽度:最多结点数的层中所包含的结点数/*也就是把二叉树画标准,横向最宽的就是宽度*/ 深度:所有结点中最深的结点的所在层数/*也就是二叉树的高度,数有多少层*/

    现在上剑指offer简单题

    输入一棵二叉树,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径, 最长路径的长度为树的深度 解析题意:求一个二叉树的深度。 然后此时我就一脸茫然,怎么做呢? 此时你应百度一下,然后就行了, 不用看后续的解析, 多说一句,考的的是递归 上c/c++语言代码 使用递归方法 /* struct TreeNode { int val;//这是根 struct TreeNode *left;//左结点 struct TreeNode *right;//右结点 TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: int TreeDepth(TreeNode* pRoot) {/*这里填代码 解析思路,分为四步 第一步:如果是空树,那没有深度,这步最简单,就考了一个二叉树可以非空 **/ if (pPoot == 0) {return 0;} } /*第二步,递归开始了,先遍历左子树,计算他的深度 第三步,遍历右子树,计算他的深度 第四步,return 左结点和右结点深度中较大那个值,加上1,这里还有你计算最后一个结点,它没有孩子结点了*/ else(pRoot != 0){ ld = GetDeepth(pRoot.leftchild)//第二步 rd = GetDeepth(pRoot.rightchild)//第三步 return ( ld > rd ? ld :rd )+1;//第四步, //ld > rd ? ld :rd ,问号前为判断条件,条件结果为真返回问号后面冒号前面的,假的就返回冒号后的值。 } };

    是不是没看懂,还是看网上的教学视频吧,持续更新

    Processed: 0.011, SQL: 8