二叉树某个结点所在层数
- 所有节点的值不同,设所查找结点值当前所在层次为1;
- 通过递归向下找x的结点所在位置,然后通过回溯的时候,也就是left + right + 1,不断+1;
- left和right都为0,说明没找到x结点,返回0;
- left和right只能一个为0,一个非0代表找到的结点层数,我们直接return left+right+1;不用判断哪个为0,哪个不为0;
public int level(char x) {return level(root, x);}private int level(BTNode<Character> t, char x) {if (t == null)return 0;if (t.data == x)//设想查找的结点x为第一层return 1;int left = level(t.lchild, x);int right = level(t.rchild, x);if (left == 0 && right == 0)//两个子树都没找到return 0;else//找到了return left + right + 1;//根节点为1层,且left和right一个为0,一个非0}
主方法简单测试:
public class Main {public static void main(String[] args) {String str = "A(B(D(F,),E),C(,G))";BTree bt = new BTree();bt.createBTree(str);System.out.println("F结点的的层数:" + bt.level('F'));System.out.println("G结点的的层数:" + bt.level('G'));System.out.println("A结点的的层数:" + bt.level('A'));}
}
二叉树某个结点所在层数相关推荐
- 求二叉树上结点的路径_剑指offer 二叉树
二叉树的镜像(简单) 操作给定的二叉树,将其变换为源二叉树的镜像. 思路: 根节点左右节点调换位置 递归 注意判断空子树情况 二叉树的深度(简单) 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经 ...
- 二十七、二叉树--删除结点
一.删除规则 如果删除的节点是叶子节点,则删除该节点 如果删除的节点是非叶子节点,则删除该子树. 注意到时候学习二叉排序树的时候删除非叶子结点就不是这样了 二.删除结点思路分析 三.代码实现 pack ...
- 程序员面试题精选100题(48)-二叉树两结点的最低共同父结点[数据结构]
题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点 ...
- 数据结构----二叉树叶子结点到根节点的高度计算
数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...
- 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc
求二叉树根到给定节点的路径设计报告 题目: 求二叉树根到给定节点的路径 摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的 ...
- 二叉树叶子结点,非叶子节点以及深度的计算
二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...
- 二叉树的结点度表示法
二叉树的顺序存储结构可看作是二叉树的一种无边表示,即树中边信息是隐含的.二叉树的另一种无边表示称为二叉树的结点度表示.这种表示法将二叉树中所有结点依其后序列表排列,并在每个结点中附加一个0到3之间的整 ...
- c语言实现求二叉树叶子结点个数
通过递归求解二叉树叶子结点个数,关键在于递归结束条件的设置. main.c #include<stdio.h>//定义结点类型 typedef struct BINARYNODE {cha ...
- 二叉树的结点相关计算公式
二叉树的结点计算问题及性质 性质1 : 二叉树的第 i 层上至多有 2^(i-1) 个结点 (i>=1) 性质2 : 深度为 k 的二叉树至多有 2^k -1 个结点( k>=1) 性质 ...
最新文章
- scala学习手记34 - trait方法的延迟绑定
- MySQL数据库排序order by(asc、desc)
- python在哪里写程序和运行-Python程序的编写和运行方式有两种()
- 你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...
- java单例模式理解_快速理解Java中的五种单例模式
- Android官方开发文档Training系列课程中文版:OpenGL绘图之图形定义
- 可汗学院 统计学(12到34集)
- ctr 平滑_CTR预估中的贝叶斯平滑方法及其代码实现
- 告诉你我身边很多的聪明人,怎样利用科技产品挣钱
- calendR :为你定制私人专属日历
- Java——泛型(最易懂的方式讲解泛型)
- Android小程序白屏,微信小程序web-view跳转h5 安卓白屏
- 【3D计算机视觉】Pointnet源码分析
- zt电脑围棋中的人工智能技术
- 台式计算机如何自动开关机,台式机怎么设置自动开关机
- 电脑动态壁纸软件哪个好用:试试Wallpaper Engine离线版吧
- oracle查询所有员工人数,oracle查询员工人数最少的部门
- 五、椒盐排骨(Pepper Salt Spareribs)
- 为啥功放上的音量控制的dB数都是负的
- 在PowerPoint如何绘制流程图