1. 所有节点的值不同,设所查找结点值当前所在层次为1;
  2. 通过递归向下找x的结点所在位置,然后通过回溯的时候,也就是left + right + 1,不断+1;
  3. left和right都为0,说明没找到x结点,返回0;
  4. 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'));}
}

二叉树某个结点所在层数相关推荐

  1. 求二叉树上结点的路径_剑指offer 二叉树

    二叉树的镜像(简单) 操作给定的二叉树,将其变换为源二叉树的镜像. 思路: 根节点左右节点调换位置 递归 注意判断空子树情况 二叉树的深度(简单) 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经 ...

  2. 二十七、二叉树--删除结点

    一.删除规则 如果删除的节点是叶子节点,则删除该节点 如果删除的节点是非叶子节点,则删除该子树. 注意到时候学习二叉排序树的时候删除非叶子结点就不是这样了 二.删除结点思路分析 三.代码实现 pack ...

  3. 程序员面试题精选100题(48)-二叉树两结点的最低共同父结点[数据结构]

    题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点 ...

  4. 数据结构----二叉树叶子结点到根节点的高度计算

    数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

  5. 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc

    求二叉树根到给定节点的路径设计报告 题目: 求二叉树根到给定节点的路径 摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的 ...

  6. 二叉树叶子结点,非叶子节点以及深度的计算

    二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...

  7. 二叉树的结点度表示法

    二叉树的顺序存储结构可看作是二叉树的一种无边表示,即树中边信息是隐含的.二叉树的另一种无边表示称为二叉树的结点度表示.这种表示法将二叉树中所有结点依其后序列表排列,并在每个结点中附加一个0到3之间的整 ...

  8. c语言实现求二叉树叶子结点个数

    通过递归求解二叉树叶子结点个数,关键在于递归结束条件的设置. main.c #include<stdio.h>//定义结点类型 typedef struct BINARYNODE {cha ...

  9. 二叉树的结点相关计算公式

    二叉树的结点计算问题及性质 性质1 : 二叉树的第 i 层上至多有 2^(i-1) 个结点 (i>=1) 性质2 :  深度为 k 的二叉树至多有 2^k -1 个结点( k>=1) 性质 ...

最新文章

  1. scala学习手记34 - trait方法的延迟绑定
  2. MySQL数据库排序order by(asc、desc)
  3. python在哪里写程序和运行-Python程序的编写和运行方式有两种()
  4. 你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...
  5. java单例模式理解_快速理解Java中的五种单例模式
  6. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形定义
  7. 可汗学院 统计学(12到34集)
  8. ctr 平滑_CTR预估中的贝叶斯平滑方法及其代码实现
  9. 告诉你我身边很多的聪明人,怎样利用科技产品挣钱
  10. calendR :为你定制私人专属日历
  11. Java——泛型(最易懂的方式讲解泛型)
  12. Android小程序白屏,微信小程序web-view跳转h5 安卓白屏
  13. 【3D计算机视觉】Pointnet源码分析
  14. zt电脑围棋中的人工智能技术
  15. 台式计算机如何自动开关机,台式机怎么设置自动开关机
  16. 电脑动态壁纸软件哪个好用:试试Wallpaper Engine离线版吧
  17. oracle查询所有员工人数,oracle查询员工人数最少的部门
  18. 五、椒盐排骨(Pepper Salt Spareribs)
  19. 为啥功放上的音量控制的dB数都是负的
  20. 在PowerPoint如何绘制流程图

热门文章

  1. 回顾之前在上海工作一年
  2. 基于VS2019 C++的跨平台(Linux)开发(1.3.3)——进程管理
  3. linux内解压rar文件
  4. 【番外】遇到autoCAD问题,大意失荆州,冒汗定位一星期
  5. 如何实现尺子样式html,纯CSS实现单元素构建的刻度尺
  6. 第二章:我的大学(中篇)
  7. 【组合数学】 Holding Bin-Laden Captive 详解
  8. Android系统中TextView默认行间距调整
  9. MongoDB大量集合启动加载优化原理
  10. 华为双前置摄像头_华为P9首次曝光:双前置摄像头让人眼前一亮