算法:二叉树代码示例
二叉树特点
左节点值小于根节点值,右节点值大于根节点
public class BinaryTree {
private Node root;
@Data
private static class Node {
private int data;
private Node left;
private Node right;
public Node(int data){
this.data = data;
}
}
public Node find(int key){
Node current = root;
while(current != null){
if(current.data > key){
current = current.left;
}
if(current.data < key){
current = current.right;
}
if(current.data == key){
return current;
}
}
return null;
}
public boolean insert(int data){
Node newNode = new Node(data);
if(root == null){
root = newNode;
return true;
}else{
Node current = root;
Node parent = null;
while (current != null){
parent = current;
if(current.data > data){
current = current.left;
if(current == null){
parent.left = newNode;
return true;
}
} else{
current = current.right;
if(current == null){
parent.right = newNode;
return true;
}
}
}
}
return false;
}
public Node findMax(){
Node current = root;
while(current != null){
current = current.right;
}
return current;
}
public Node findMin(){
Node current = root;
while (current != null) {
current = current.left;
}
return current;
}
//删除没有子节点的节点
public boolean delete(int key){
Node current = root;
Node parent = current;
boolean isLeft = false;
while (current.data != key){
parent = current;
if(current.data > key){
isLeft = true;
current = current.left;
}else {
isLeft = false;
current = current.right;
}
if(current == null){
return false;
}
}
if(current.left == null && current.right == null){
if(current == root){
root = null;
}
if(isLeft){
parent.left = null;
}else{
parent.right = null;
}
return true;
}
return false;
}
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
常见算法示例
冒泡排序 for(int i =0;i<arr.length-1;i++) { for(int j=0;j<arr.length-i-1;j++) {//-1为了防止溢出 if(arr[j]>arr[j+1]) { int temp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } 二分查找法 给定数组是按从小到大排序好的 //先排序 bubbleSort(arr); int left = 0; int right = arr.length - 1; int mid; while(left <= right){ mid = (left + right) % 2 == 0 ? (left + right) / 2 : (left + right) / 2 + 1; if(arr[mid] > val){ right = mid ; }else if (arr[mid] < val){ left = mid ; }else{ //找到该值 ** System.out.println(mid);** ret...
-
下一篇
一起深入探讨Maven远程仓库的配置和部署
Maven远程仓库的配置和部署 前言: Maven 是专门用于构建和管理Java相关项目的工具。Maven 是一个项目管理和整合工具。Maven 为开发者提供了一套完整的构建生命周期框架。开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置,因为 Maven 使用了一个标准的目录结构和一个默认的构建生命周期。 Maven 的主要目的是为开发者提供:一个可复用、可维护、更易理解的工程综合模型;与这个模型交互的插件或者工具。 今天要跟大家一起分享探讨的是Maven远程仓库的配置和部署,下面一起进入正题把 一、远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库,默认的中央仓库访问的速度比较慢,访问的人或许很多,有时候也无法满足我们项目的需求,可能项目需要的某些构件中央仓库中是没有的,而在其他远程仓库中有,如JBoss Maven仓库。这时,可以在pom.xml中配置该仓库,代码如下: jbossJBoss Repositoryhttp://repository.jboss.com/maven2/truedailyfalsewarndefaultrepository:在rep...
相关文章
文章评论
共有0条评论来说两句吧...