二叉樹add底層原理
//二叉樹
public class ErchashuTest<E extends Comparable<E>> {
private class Node{
public E e;
public Node left, right;
public Node(E e){
this.e = e;
this.left = null;
this.right = null;
}
}
private Node root;
private int size;
public ErchashuTest(){
this.root = null;
this.size = 0;
}
//得到數量
public int getSize(){
return this.size;
}
//新增
public void add(E e){
//首次接收到的e就是根節點
root = add(root, e);
}
private Node add(Node node, E e){
//首先判斷node(根節點是否為空)
if (node == null){
//如果為空,數量++,返回e
size++;
return new Node(e);
}
//如果不為空就代表已有根節點,判斷 e - 根節點是否 < 0 (例如16 - 28 < 0)
if (e.compareTo(node.e) < 0){
//16 - 28 < 0 調add方法,去判斷節點的左邊是否為null,如果為空就把e放在當前節點的左邊節點,否則繼續往下遞迴
node.left = add(node.left, e);
} else if(e.compareTo(node.e) > 0){
//30 - 28 > 0 調add方法,去判斷節點的右邊是否為null,如果為空就把e放在當前節點的右邊節點,否則繼續往下遞迴
node.right = add(node.right, e);
}
//返回當前節點
return node;
}
}
//測試
public class eTest{
public static void main(String[] args) {
ErchashuTest<Integer> ecsTest = new ErchashuTest<>();
ecsTest.add(28);
ecsTest.add(16);
ecsTest.add(13);
ecsTest.add(30);
}
}
相關文章
- OC底層探索(十六) KVO底層原理
- ConcurrentHashMap底層原理HashMap
- synchronized底層原理synchronized
- TiDB 底層儲存結構 LSM 樹原理介紹TiDB
- Spring Cloud底層原理SpringCloud
- RunLoop底層原理探究OOP
- iOS底層原理-CategoryiOSGo
- golang select底層原理Golang
- RabbitMq底層原理分析MQ
- Netty的底層原理Netty
- Volatile的底層原理
- ArrayList集合底層原理
- HashMap的底層原理HashMap
- HashMap原理底層剖析HashMap
- HashMap原理詳解,包括底層原理HashMap
- NSDictionary底層實現原理
- iOS底層原理探究-RunloopiOSOOP
- iOS底層原理探究-RuntimeiOS
- AutoreleasePool底層實現原理
- 底層原理探究(二)RunLoopOOP
- 理解PHP底層原理(一)PHP
- 初步理解 JavaScript 底層原理JavaScript
- HashMap底層實現原理HashMap
- HashMap的底層原理分析HashMap
- volatile底層原理詳解
- Android之Context底層原理AndroidContext
- InnoDB索引與底層原理索引
- 初識LinkedList底層原理
- AOP底層原理之CGlibCGLib
- Vue中的底層原理Vue
- ArrayList底層原理淺析
- 計算二叉樹的層數二叉樹
- 二叉樹的層序遍歷二叉樹
- 二叉樹的按層遍歷二叉樹
- iOS底層原理總結 – RunLoopiOSOOP
- 深度剖析Spring Cloud底層原理SpringCloud
- [譯] SQLite 底層查詢原理SQLite
- MySQL索引底層實現原理MySql索引