美文网首页Java面试
JAVA中TreeMap和HashMap源码解读基础---二叉树

JAVA中TreeMap和HashMap源码解读基础---二叉树

作者: 铁拳阿牛 | 来源:发表于2017-08-05 22:14 被阅读43次
欢迎关注铁拳阿牛的公众号

转载请注明原文出处

为什么想写这篇文章呢?有些同学没有很扎实得数据结构基础然后想深入了解TreeMap和HashMap,觉得很难,所以我想从入门开始得角度梳理一下,方便以后学习各种树,毕竟在看数据库的时候这些基础很重要,请各位指出问题勿喷。

如果不了解树的定义,看上一篇

二叉树的定义(了解就好,不用在意这些东西,建议读完全文来看定义,毕竟我们不是为了考试

二叉树T:一个有穷的结点集合。

这个集合可以为空。

若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。

 二叉树具体五种基本形态 


二叉树的子树有左右顺序之分,看C和D就之道懂了

特殊二叉树

斜二叉树(Skewed Binary Tree)和满二叉树(Full Binary Tree)


斜二叉树是树最坏的情况了。所以我们后来有了平衡二叉树。以至于JAVA的TreeMap用了平衡二叉树的升级版本红黑树。---------如果已知一颗二叉树是满二叉树,那么我们用数组更好,具体可以看看堆的做法。

 完全二叉树(Complete Binary Tree)

有n个结点的二叉树,对树中结点按从上至下、从左到右顺序进行编号,编号为i(1 ≤ i ≤ n)结点与满二叉树中编号为 i 结点在二叉树中位置相同。有没有注意上面的满二叉树也是一个完全二叉树?

二叉树几个重要性质(作为考试和吹牛必备)

 一个二叉树第 i 层的最大结点数为:2^(i-1), i>=1.

 深度为k的二叉树有最大结点总数为:2^k-1, i>=1.

 对任何非空二叉树 T,若n0表示叶结点的个数、n2是度为2的非叶结点个数,那么两者满足关系n0= n2+1。


常用的遍历方法有:

 void PreOrderTraversal( BinTree BT ):先序----根、左子树、右子树;

 void InOrderTraversal( BinTree BT ): 中序---左子树、根、右子树;(这个一定记好了)

 void PostOrderTraversal( BinTree BT ):后序---左子树、右子树、根

 void LevelOrderTraversal( BinTree BT ):层次遍历,从上到下、从左到右


链表存储(这里只概述链表的存储结构,至于数组可以去了解堆,它不浪费空间)

欢迎关注铁拳阿牛的公众号

相关文章

网友评论

    本文标题:JAVA中TreeMap和HashMap源码解读基础---二叉树

    本文链接:https://www.haomeiwen.com/subject/emkwlxtx.html