数据结构BinaryTree实例(六):求树的结点的祖先
来源:互联网 发布:淘宝7年老店有权重吗 编辑:程序博客网 时间:2024/06/01 09:44
所谓树的结点的祖先指的是从根节点到达该节点所经过的结点,及该结点的父结点及系列父结点。使用递归的思想,也可以使用判断,入队的非递归思想,本例直接采用递归方式解决对于树这种数据结构而言,递归是一种非常使用的解决问题的方式。
/**
*@Title: Ancestors.java
*@Package binarytree
*@Description: 对于一颗普通的二叉树和一个节点key,找出该节点的所有祖先节点。
*@author peidong
*@date 2017-4-27 上午8:31:01
*@version V1.0
*/
/*使用递归的思想,也可以使用判断,入队的非递归思想,本例直接采用递归方式解决
对于树这种数据结构而言,递归是一种非常使用的解决问题的方式*/
packagebinarytree;
importbinarytree.ListToTree.TreeNode;
/**
* @ClassName: Ancestors
* @Description: TODO
* @date 2017-4-27 上午8:31:01
*
*/
publicclass Ancestors {
/**
*
* @ClassName: TreeNode
* @Description: 构建树节点
* @date 2017-4-27 上午8:32:10
*
*/
public static class TreeNode{
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode(int data){
this.data = data;
left = null;
right = null;
}
}
/**
*
* @Title: printAncestors
* @Description: 判断数据是否在树中,在则输出所有祖先结点数据
* @param @param root
* @param @param data
* @param @return
* @return boolean
* @throws
*/
public static booleanprintAncestors(TreeNode root, int data){
//边界条件
if(root == null){
return false;
}
//如果根节点即数据
if(root.data == data){
return true;
}
//遍历左右子树,存在的话,父结点即祖先
if(printAncestors(root.left, data)|| printAncestors(root.right, data)){
System.out.print(root.data+" ");
return true;
}
//不存在
return false;
}
/**
*@Title: main
*@Description: 测试案例
*@param @param args
*@return void
*@throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.left.left.left = newTreeNode(7);
//输出指定数据的祖先
printAncestors(root, 7);
}
}
- 数据结构BinaryTree实例(六):求树的结点的祖先
- 求两个树结点的最低公共祖先(Again)
- 求二叉树两结点最近的共同祖先结点
- 数据结构 二叉树(binarytree)的实现
- 【数据结构】求二叉树中两个结点最近的公共祖先
- 数据结构BinaryTree实例(五):树的深度与广度
- 二叉树求两个结点的父节点及一个结点的所有祖先结点
- 求二叉树中两个结点的最近公共祖先
- 数据结构BinaryTree实例(二):二叉树的中序遍历(递归与非递归)
- 数据结构BinaryTree实例(三):二叉树的后序遍历(递归与非递归)
- 求两个结点的公共祖先
- [2016/12/2]求二叉查找树结点的最低共有祖先(LCA)
- 有一个1亿结点的树,已知两个结点, 求它们的最低公共祖先!
- 二叉树中根结点到某节点的路径(求某结点的所有祖先)
- 求二叉树的高度,叶子节点个数,第K层结点个数,求祖先结点问题
- 求二叉树中两结点的最小公共祖先
- 求二叉树中两结点的最小公共祖先
- 求二叉树中任意两结点的最近共同祖先的算法及其证明
- ElasticSearch并发操作之乐观锁的使用
- 安卓JNI分析
- androidsutdio那些坑
- JavaScript有没有public和private?
- Android PowerManager分析
- 数据结构BinaryTree实例(六):求树的结点的祖先
- js数组map方法
- C++中相对路径与绝对路径以及斜杠与反斜杠的区别
- IGBT是啥?看完这篇文章你还不明白就不要再做电子行业。
- Mybatis:映射解决列名不匹配的方法
- Ubuntu16.04+cuda-8.0+cudnn-v5.1+tensorflow0.8-gpu/tensorflow1.0-gpu安装教程
- 在同一台电脑部署多个Tomcat服务
- linux软件安装
- singalton懒汉模式饱汉模式饿汉模式对比