Java数据结构与算法---二叉树
来源:互联网 发布:复合vb 编辑:程序博客网 时间:2024/05/29 19:45
Java数据结构与算法—二叉树
二叉树也是一直简单的数据结构,主要难点是在插入时要判断一下要插入在二叉树的左子树还是右子树上!三种遍历方法也是十分简单,在代码中也有实现:
首先是节点的数据结构:
package cn.n_tree;public class Node { private int key; private int data; private Node left; private Node right; public int getKey() { return key; } public void setKey(int key) { this.key = key; } public int getData() { return data; } public void setData(int data) { this.data = data; } public Node getLeft() { return left; } public void setLeft(Node left) { this.left = left; } public Node getRight() { return right; } public void setRight(Node right) { this.right = right; } public Node(int key, int data) { super(); this.key = key; this.data = data; } //打印 public void disPlay(){ System.out.println(this.key+","+this.data); }}
然后就是各种方法,如插入,遍历:
package cn.n_tree;public class BinaryTree { private Node root; public Node getRoot() { return root; } //插入方法 public void insert(int key,int data){ Node newNode = new Node(key,data); if(root==null){ root=newNode; }else{ Node current=root; while(true){ if(key<current.getKey()){//应该放在左边 if(current.getLeft()==null){//已经到页子节点了 current.setLeft(newNode); //break; return; } current=current.getLeft(); }else{//在右子树 if(current.getRight()==null){//已经是页子节点了 current.setRight(newNode); //break; return; } current=current.getRight(); } } } } //查找方法 public Node find(int key){ Node current = root; if(root==null){ System.out.println("空二叉树!"); }else{ while(current.getKey()!=key){ if(key<current.getKey()){//在左子树 current=current.getLeft(); }else{//在右子树 current = current.getRight(); } if(current==null){ System.out.println("二叉树到底了,没找到"); break; } } } return current; } //删除方法 public void delete(int key){ } //修改方法 public void change(int key,int newData){ Node find = find(key); find.setData(newData); } //先序遍历 public void preOrder(Node node){ if(node!=null){ node.disPlay(); preOrder(node.getLeft()); preOrder(node.getRight()); } } //中序遍历 public void inOrder(Node node){ if(node!=null){ inOrder(node.getLeft()); node.disPlay(); inOrder(node.getRight()); } } //后序遍历 public void endOrder(Node node){ if(node!=null){ endOrder(node.getLeft()); endOrder(node.getRight()); node.disPlay(); } } public static void main(String[] args) { //插入 BinaryTree tree = new BinaryTree(); /* tree.insert(1, 111); //////////////// Node res = tree.find(1); System.out.println("查找res结果:"); res.disPlay(); ////////////// System.out.println("修改节点的值!"); tree.change(1, 1112); System.out.println("修改后的值:"); res = tree.find(1); System.out.println("查找res结果:"); res.disPlay();*/ //////////////先序遍历 System.out.println("/////////////////先序遍历"); tree.insert(80, 80); tree.insert(49, 49); tree.insert(42, 42); tree.insert(30, 30); tree.insert(45, 45); tree.insert(90, 90); tree.insert(150, 150); tree.insert(130, 130); tree.insert(82, 82); tree.preOrder(tree.getRoot()); //////////////中序遍历 System.out.println("/////////////////中序遍历"); tree.inOrder(tree.getRoot()); //////////////后序遍历 System.out.println("/////////////////后序遍历"); tree.endOrder(tree.getRoot()); }}
阅读全文
0 0
- Java数据结构与算法:二叉树
- Java数据结构与算法---二叉树
- java数据结构与算法-二叉树
- 【数据结构与算法】二叉树
- 数据结构与算法-二叉树
- 算法与数据结构 - 二叉树
- 数据结构与算法:二叉树
- 数据结构与算法:二叉树
- 数据结构与算法-二叉树
- 数据结构与算法-二叉树(java描述)
- 数据结构与算法-二叉查找树(java描述)
- Java数据结构与算法分析《十》二叉树
- Java数据结构与算法分析《十二》遍历二叉树
- Java数据结构与算法《十三》删除二叉树节点
- 数据结构与算法分析笔记与总结(java实现)--二叉树11:二叉树的深度
- 数据结构与算法分析笔记与总结(java实现)--二叉树13:平衡二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树15:对称的二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树24:重建二叉树
- 3.1 Linux中的文件IO (7、8节)
- 《C语言及程序设计初步》_1.7分支结构程序体验_实践6——正差值(方法1)
- DirectX11(二)
- kaldi005 -- 构图
- iOS学习笔记-072.CALayer02——transform属性
- Java数据结构与算法---二叉树
- Android 资源管理
- BZOJ-1833 [ZJOI2010]count 数字计数 数位DP
- 快速排序
- 垃圾收集机制——JavaScript
- java可变参数
- APP 微信支付,服务端处理
- GCC的-fno-builtin选项
- 七层中反射+配置文件的使用