package com.test.utils;
/**
* 二叉树模拟类
*/
public class Tree {
// 根节点
private TreeNode rootNode = new TreeNode(null, null, null);
/**
* 添加数据
*/
public TreeNode add(Long data) {
TreeNode node = new TreeNode(data, null, null);
TreeNode currentNode = rootNode;
if (null != currentNode.data) {
while (true) {
TreeNode parentNode = currentNode;
if (data < parentNode.getData()) {
currentNode = currentNode.getLeftChildNode();
if (null == currentNode) {
parentNode.setLeftChildNode(node);
return node;
}
} else {
currentNode = currentNode.getRightChildNode();
if (null == currentNode) {
parentNode.setRightChildtNode(node);
return node;
}
}
}
} else {
rootNode.data = data;
return node;
}
}
/**
* 查找节点
*/
public TreeNode find(long data) {
TreeNode currentNode = rootNode;
while (null != currentNode && data != currentNode.getData()) {
if (data < currentNode.getData()) {
currentNode = currentNode.getLeftChildNode();
} else {
currentNode = currentNode.getRightChildNode();
}
}
return currentNode;
}
/**
* 前序遍历
*/
public void frontOrder(TreeNode node) {
if (null != node) {
System.out.println(node.data);
frontOrder(node.getLeftChildNode());
frontOrder(node.getRightChildNode());
}
}
/**
* 中序遍历
*/
public void inOrder(TreeNode node) {
if (null != node) {
inOrder(node.getLeftChildNode());
System.out.println(node.data);
inOrder(node.getRightChildNode());
}
}
public TreeNode getRootNode() {
return rootNode;
}
/**
* 二叉树节点对象
*/
public class TreeNode {
private Long data; // 数据域
private TreeNode leftChildNode; // 左子节点
private TreeNode righttChildNode;// 右子节点
public TreeNode(Long data, TreeNode leftChildNode, TreeNode righChildtNode) {
super();
this.data = data;
this.leftChildNode = leftChildNode;
this.righttChildNode = righChildtNode;
}
public Long getData() {
return data;
}
public TreeNode getLeftChildNode() {
return leftChildNode;
}
public void setLeftChildNode(TreeNode leftChildNode) {
this.leftChildNode = leftChildNode;
}
public TreeNode getRightChildNode() {
return righttChildNode;
}
public void setRightChildtNode(TreeNode rightChildtNode) {
this.righttChildNode = rightChildtNode;
}
}
}
二叉树简单模拟
最新推荐文章于 2023-12-19 21:07:45 发布