赞
踩
- 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;
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。