二叉树求两个结点的父节点及一个结点的所有祖先结点
来源:互联网 发布:java电梯项目经理 编辑:程序博客网 时间:2024/04/29 15:28
求两个结点的父节点
有一个比较简单的方法是遍历二叉树数,判断结点的左右结点是否为给出结点。这里采用另外一种方法:
public static<T> BinaryTreeNode<T> LCA(BinaryTreeNode<T> root, BinaryTreeNode<T> a, BinaryTreeNode<T> b){ // 查找a,b结点的父结点 BinaryTreeNode<T> left,right; if(root == null) return root; if(root.data == a.data || root.data == b.data) return root; left = LCA(root.getLeft(),a,b); right = LCA(root.getRight(),a,b); if(left != null && right != null) return root; else return left == null ? right : left; }
求给出结点的所有祖先结点
给出一个结点,求所有的祖先结点,也可以理解为求根节点到该节点的路径。
public static<T> int printAllAncestors(BinaryTreeNode<T> root, BinaryTreeNode<T> node){ // 求结点node的所有祖先结点 if(root == null || root.getLeft() == null || root.getRight() == null) return 0; if(root.getLeft().data == node.data || root.getRight().data == node.data || printAllAncestors(root.getLeft(),node) == 1 || printAllAncestors(root.getRight(), node) == 1){ System.out.println(root.getData()); return 1; } return 0; }
完整代码可以访问我的GitHub:https://github.com/StriverLi/Data-Structures-and-Algorithms-in-Java/blob/master/src/tree/BinaryTreeNode.java
0 0
- 二叉树求两个结点的父节点及一个结点的所有祖先结点
- 二叉树中根结点到某节点的路径(求某结点的所有祖先)
- 求二叉树中两个结点的最近公共祖先
- 求二叉树两结点最近的共同祖先结点
- 求二叉树中两个节点的最近公共祖先结点
- 有一个1亿结点的树,已知两个结点, 求它们的最低公共祖先!
- 二叉树中找两个结点的最近的公共祖先结点
- 二叉树中找两个结点的最近公共祖先结点
- 二叉树中找两个结点的最近公共祖先结点
- 求二叉树的高度,叶子节点个数,第K层结点个数,求祖先结点问题
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 求两个结点的公共祖先
- 题目:在二叉树中给出两个已知结点,求这两个结点的最低公共祖先
- 求一个二叉树中两个结点的最大距离
- 二叉树 之 寻找某个结点所有的祖先
- 二叉树两个结点的最低公共祖先
- javascript中函数声明、函数表达式以及匿名函数和自执行函数
- 安卓组件化开发
- C语言中int、long int、long long的区别
- Unity3D换装系统原理
- 第一个python程序
- 二叉树求两个结点的父节点及一个结点的所有祖先结点
- V
- 高性能高并发架构的实现要素
- 类加载机制及自定义ClassLoader(另一博客)
- python的subprocess
- W
- 设计模式之工厂方法模式
- input type=file 实现上传、预览、删除等功能
- Hadoop 基于protobuf 的RPC的服务器端实现原理