![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
逸川先生
Java开发工程师,专注后台开发两年,擅长分布式系统
展开
-
怎么计算一棵完全二叉树的节点个数
题目:已知一棵完全二叉树,求其节点的个数要求:时间复杂度低于O(N),N为这棵树的节点个数完全二叉树的概念就不多叙述了。讲讲思路:题目的要求是时间复杂度低于O(N),所以遍历的方式就不用考虑了,根据完全二叉树的特点可以知道,从头节点head开始一直往左走可以可以到达完全二叉树的最底层,而就是可以计算出二叉树的高度H了,(默认给定的一定是完全二叉树,,,)1)当头结点的右子节点作为头节点来计算他的高...原创 2018-03-13 22:00:58 · 10364 阅读 · 0 评论 -
如何判断一棵二叉树是否平衡
平衡二叉树就是AVL树,定义也很简单,就是一棵树的每一个节点的左右子树高度相差不超过1。AVL树具有数组和链表的优点,方便查找也方便插入,时间复杂度仅为O(height),height就是树的高度,所以为什么需要平衡二叉树就显而易见了,就是效率!!那么如何判断一棵树是否是平衡的呢,使用递归可以很好很方便地解决这个问题,public class C05_BalanceTree { public s...原创 2018-03-12 21:28:45 · 717 阅读 · 0 评论 -
如何直观地打印一棵二叉树
二叉树是很常用的数据结构,但有时又会苦于没有办法对其进行直观的了解,如果你说可以使用遍历的方式来看他的结构,那么很对不起,这个方法并不是每次都靠谱的。这个时候,如果能有一个函数直观地看到二叉树的结构就很棒了,这里和大家分享一个这样的函数,虽然不是平常我们所看到的从上到下而是从左到右看的,但已经很不错了哦。看的时候,请把你的脑袋瓜逆时针转九十度当然了,这个代码是左老师给的,,,可以作为工具类使用pu...原创 2018-03-11 20:06:37 · 7588 阅读 · 0 评论 -
如何在二叉树中找到一个节点的后继节点
【题目】 现在有一种新的二叉树节点类型如下: public class Node { public int value; public Node left; public Node right; public Node parent; public Node(int data) { t...原创 2018-03-11 16:43:44 · 1814 阅读 · 0 评论 -
实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式
public static class Node{ public int value; public Node left; public Node right; public Node(int value){ this.value = value; } } 递归版 先序 //先序:中左右 public static void preTr...原创 2018-03-10 21:17:37 · 328 阅读 · 0 评论 -
最小生成树--Kruskal算法
条件:无向图从边开始,将所有边加到优先级队列里面,依次弹出,如果该边起点和终点不是在同一个并查集里面,就将该边加到结果集合里面,并且将这两个点合并到同一个并查集里图的表示和生成见:点击打开链接import java.util.Collection;import java.util.Comparator;import java.util.HashMap;import java.util.Has...原创 2018-03-26 21:42:46 · 2326 阅读 · 0 评论 -
最小生成树--Prim算法
条件:无向图任意一个点作为开端,将该点的所有边加到优先级队列,表示边被解锁,从队列中弹出一条边(必是权重最小的)看该边是否已经标记,如果没标记就标记,表示这条边是需要的,然后将该边的相连的另一个点相连的所有边解锁,,,如此类推图的表示和生成见:点击打开链接import java.util.Comparator;import java.util.HashSet;import java.util....原创 2018-03-26 21:34:58 · 1128 阅读 · 0 评论