发现一篇优秀的讲解TreeNode的文章,就不重复造车了,在这记录一下:
https://blog.csdn.net/_/article/details/
TreeNode的类关系如下:

TreeNode继承Node,具有Node的单向链表的特性,TreeNode的有参构造方法也是用得父类Node的构造方法,代码如下
TreeNode(int hash, K key, V val, Node
next) { super(hash, key, val, next); }
每一个TreeNode都是红黑树中的一个节点,TreeNode具有以下特点:
如下图:

每次对红黑树的操作都会影响红黑树的五点特性,通过左旋和右旋来维持这种特性的,左旋、右旋的代码如下:
//假设传入G节点,root是G节点,p也是G节点 static
TreeNode
rotateLeft(TreeNode
root, TreeNode
p) { //r是G的右节点,rl是G的左节点,pp是G的父节点 TreeNode
r, pp, rl; if (p != null && (r = p.right) != null) { if ((rl = p.right = r.left) != null) rl.parent = p; if ((pp = r.parent = p.parent) == null) (root = r).red = false; else if (pp.left == p) pp.left = r; else pp.right = r; r.left = p; p.parent = r; } return root; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206260.html原文链接:https://javaforall.net
