0 课程地址
https://coding.imooc.com/lesson/207.html#mid=13456
1 重点关注
1.1 二分搜索树添加元素代码实现
见3.1
2 课程内容
3 Coding
3.1 二分搜索树添加元素代码
- 关键代码
//2 循环添加元素 public void add(E e){ //2.1 考虑特殊情况,如果是第一次调用,root为null if(root==null){ root = new Node(e); size++; }else{ //2.2 添加递归方法 add(e,root); } } //3 递归,添加元素 public void add(E e,Node root){ //3.1 终止条件 //3.1.1 要插入的元素和二叉树原有节点相同 if(e.equals(root.e)){ return; } //3.1.2 最终插入左孩子 if(e.compareTo(root.e)<0 && root.left==null){ root.left = new Node(e); size++; return; } //3.1.2 最终插入右孩子 if(e.compareTo(root.e)>0 && root.right == null){ root.right = new Node(e); size++; return; } //3.2 递归 //3.2.1 递归左孩子 if(e.compareTo(root.e)<0){ add(e,root.left); } //3.2.2 递归右孩子 if(e.compareTo(root.e)>0){ add(e,root.right); } }
- 全量代码
package com.company; public class BST<E extends Comparable> { //1 内部类 private class Node{ //二叉树特有属性 private Node left,right; private E e; private Node(E e){ this.e = e; this.left = null; this.right = null; } } private int size; private Node root; public BST(){ this.size = 0; this.root = null; } /** * 定义基本方法 getSize * @author weidoudou * @date 2022/11/3 12:57 * @return int **/ public int getSize(){ return size; } /** *查询是否为空 * @author weidoudou * @date 2022/11/3 12:58 * @return boolean **/ public boolean isEmpty(){ return size == 0; } //2 循环添加元素 public void add(E e){ //2.1 考虑特殊情况,如果是第一次调用,root为null if(root==null){ root = new Node(e); size++; }else{ //2.2 添加递归方法 add(e,root); } } //3 递归,添加元素 public void add(E e,Node root){ //3.1 终止条件 //3.1.1 要插入的元素和二叉树原有节点相同 if(e.equals(root.e)){ return; } //3.1.2 最终插入左孩子 if(e.compareTo(root.e)<0 && root.left==null){ root.left = new Node(e); size++; return; } //3.1.2 最终插入右孩子 if(e.compareTo(root.e)>0 && root.right == null){ root.right = new Node(e); size++; return; } //3.2 递归 //3.2.1 递归左孩子 if(e.compareTo(root.e)<0){ add(e,root.left); } //3.2.2 递归右孩子 if(e.compareTo(root.e)>0){ add(e,root.right); } } }
诸葛