数据结构复习(重写某些重要数据结构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); } } }
相关文章推荐
- 数据结构复习(重写某些重要数据结构API) ------------队列
- 数据结构复习(重写某些重要数据结构API) ------------栈
- 数据结构复习(重写某些重要数据结构API) ------------约瑟夫环
- 数据结构复习(重写某些重要数据结构API) ------------MySequentialList(顺序表)
- 数据结构复习(重写某些重要数据结构API) ------------图
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- 二叉树的概念,二叉树的数据存储结构,二叉树的性质,二叉树的遍历方法数据结构-树的学习(3)
- 数据结构基本结构 数据结构期末复习
- 数据结构和算法 (二)数据结构基础之树、二叉树
- 数据结构复习(先序创建链表二叉树)
- 数据结构 图 树 二叉树 常考知识点复习
- 【NOIp复习】数据结构之栈、队列和二叉树
- 数据结构复习——二叉树的表示及遍历
- c++数据结构——模板类重写二叉树
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- 数据结构复习(层次遍历法复制二叉树)
- 树,森林与二叉树的转换 数据结构期末复习
- 完成端口中的单句柄数据结构与单IO数据结构的理解与设计
- 数据结构学习笔记一:数据结构基础
- 【数据结构】复习笔记