您的位置:首页 > 理论基础 > 数据结构算法

数据结构复习(重写某些重要数据结构API) ------------二叉树

2015-03-20 14:50 399 查看
基本API

初始化 查找 遍历

package 二叉树;

import java.util.Scanner;

import javax.print.DocFlavor.INPUT_STREAM;

class  Tree{
String data;
Tree leftTree;
Tree rightTree;

}
public class BinaTree {
static final int MAX = 20;
static Scanner scanner = new Scanner(System.in);
Tree init(){//初始化
Tree node;
if((node = new Tree())!=null){
System.out.println("输入一个根节点的数据:");
node.data = scanner.next();
node.leftTree = null;
node.rightTree = null;
if(node != null){
return node;
}
else {
return null;
}

}
return null;
}

void addTreeNode(Tree node) {//添加树节点
Tree pnode, parent;
String data;
int menusel;

if ((pnode = new Tree()) != null) {
System.out.println("输入二叉树节点数据:");
pnode.data = scanner.next();
pnode.leftTree = null;
pnode.rightTree = null;
System.out.println("输入节点的父节点:");
data = scanner.next();
parent = find(node, data);
if (parent == null) {
System.out.println("没找到该父节点!");
pnode = null;
return;
}
System.out.println("1.添加树的左节点\n2.添加树的右节点");
do {
menusel = scanner.nextInt();
if (menusel == 1 || menusel == 2) {
if (parent == null) {
System.out.println("不存在父节点!");
} else {
switch (menusel) {
case 1:
if (parent.leftTree != null) {
System.out.println("左节点不为空!");
} else {
parent.leftTree = pnode;
}

break;
case 2:
if (parent.rightTree != null) {
System.out.println("右节点不为空!");
} else {
parent.rightTree = pnode;
}
break;
default:
System.out.println("请输入1或者2!");
break;
}
}
}
} while (menusel != 1 && menusel != 2);
}
}

Tree find(Tree treeNodeTree , String data){//查找节点

Tree ptr;
if(treeNodeTree == null){
return null;
}
else {
if(treeNodeTree.data.equals(data)){
return treeNodeTree;
}
else{
if((ptr =find(treeNodeTree.leftTree, data))!=null){
return ptr;
}
if((ptr=find( treeNodeTree.rightTree, data))!=null){
return ptr;
}
else {
return null;
}
}
}
}

Tree   getLeft(Tree tree){
if(tree!=null){
return tree.leftTree;
}
return null;
}

Tree getRight(Tree tree){
if(tree != null){
return tree.rightTree;
}
return null;
}

int isEmpty(Tree tree){
if(tree==null){
return 1;
}
return 0;
}

int treeDepth(Tree tree){
int depthLeft,depthRight;
if(tree == null){
return 0;
}
else{
depthLeft= treeDepth(tree.leftTree);
depthRight=treeDepth(tree.rightTree);
if(depthLeft>depthRight){
return depthLeft+1;
}
else {
return depthRight+1;
}
}

}

void clear(Tree tree){
if(tree!=null){
clear(tree.leftTree);
clear(tree.rightTree);
tree = null;
}

}

void showData(Tree tree){
System.out.println(tree.data);
}
void DLRtree(Tree tree){//先序遍历
if(tree != null){
showData(tree);
DLRtree(tree.leftTree);
DLRtree(tree.rightTree);
}
}
void LDRtree(Tree tree){//中序遍历
if(tree != null){
LDRtree(tree.leftTree);
showData(tree);
LDRtree(tree.rightTree);

}

}
void LRDtree(Tree tree){//后序遍历
if(tree != null){
LRDtree(tree.leftTree);
LRDtree(tree.rightTree);
showData(tree);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 二叉树