数据结构之二叉树(java)
2018-01-14 15:37
323 查看
二叉树是数据结构中很重要的结构类型,学习数据结构也是深入学习编程的必由之路,这里我们简单介绍下我对于二叉树的理解,水平有限,如有错误还请不吝赐教。
更多关于java的文章请戳这里:(您的留言意见是对我最大的支持)
我的文章列表
Email:sxh13208803520@gmail.com
首先照例定义一个二叉树的节点类
class Node { private int value;//二叉树的值 private Node leftChild;//左孩子节点 private Node rightChild;//右孩子节点 public Node(int value, Node leftChild, Node rightChild) { this.value = value; this.leftChild = leftChild; this.rightChild = rightChild; } }
插入节点
本次用到的二叉树是顺序二叉树,即判断当前插入的节点值与二叉树中父节点比较,如果value值大于父节点,插入父节点的右子树种,反之,插入左子树种,以此类推,直到找到相应的字节点插入。public void insert(int value) { if (parent == null) {//父节点为空判断 Node node = new Node(value, null, null); parent = node; length++; } else { currentPoint = parent;//将当前结点指向父节点 while(true){//循环遍历节点,查找适合的插入位置 if(currentPoint.value>value){ if(currentPoint.leftChild!=null){ currentPoint=currentPoint.leftChild; }else{ currentPoint.leftChild=new Node(value,null,null); length++; break; } }else{ if(currentPoint.rightChild!=null){ currentPoint=currentPoint.rightChild; }else{ currentPoint.rightChild=new Node(value,null,null); length++; break; } } } } }
中序遍历二叉树节点
public String visit(Node node) { sb.append(node.value+"("); if (node.leftChild != null) visit(node.leftChild);//递归遍历左子树 if (node.rightChild != null) visit(node.rightChild);//递归遍历右子树 sb.append(")"); return sb.toString(); }
整体代码
public class BinaryTree { private Node parent; private Node currentPoint; private StringBuffer sb; private int length=0; class Node { private int value; private Node leftChild; private Node rightChild; public Node(int value, Node leftChild, Node rightChild) { this.value = value; this.leftChild = leftChild; this.rightChild = rightChild; } } public Node getParent(){ return parent; } public BinaryTree() { sb=new StringBuffer(); } public void insert(int value) { if (parent == null) { Node node = new Node(value, null, null); parent = node; length++; } else { currentPoint = parent; while(true){ if(currentPoint.value>value){ if(currentPoint.leftChild!=null){ currentPoint=currentPoint.leftChild; }else{ currentPoint.leftChild=new Node(value,null,null); length++; break; } }else{ if(currentPoint.rightChild!=null){ currentPoint=currentPoint.rightChild; }else{ currentPoint.rightChild=new Node(value,null,null); length++; break; } } } } } public String visit(Node node) { sb.append(node.value+"("); if (node.leftChild != null) visit(node.leftChild); if (node.rightChild != null) visit(node.rightChild); sb.append(")"); return sb.toString(); } public int getLength(){ return length; } @Override public String toString() { return visit(parent); } }
main函数测试
public static void main(String[] args) { BinaryTree bt = new BinaryTree(); bt.insert(1); bt.insert(3); bt.insert(2); bt.insert a51e (5); bt.insert(6); bt.insert(7); bt.insert(8); bt.insert(9); bt.insert(10); bt.insert(11); bt.insert(12); bt.insert(13); bt.insert(14); bt.insert(15); System.out.println(bt.getLength()); System.out.println(bt.toString()); }
结果输出
其中括号表示层级包含关系,更多关于java的文章请戳这里:(您的留言意见是对我最大的支持)
我的文章列表
Email:sxh13208803520@gmail.com
相关文章推荐
- 【数据结构与算法】二叉树的Java实现及特点总结
- 数据结构(Java)--树和二叉树
- 数据结构——Java实现二叉树
- 二叉树遍历Java之美[从菜鸟到高手演变]之数据结构基础之树、二叉树
- 6Java学习笔记之数据结构——二叉树
- 数据结构之二叉树的Java实现
- 数据结构(Java)——二叉树的应用
- Java中的数据结构(3)----强大的二叉树
- 数据结构之--二叉树(Java代码)
- 数据结构之树-二叉树(Java版本)
- 数据结构之二叉树之java实现
- java 二叉树 实现 数据结构 笔试
- Java之美[从菜鸟到高手演变]之数据结构基础之树、二叉树
- 数据结构中怎样用先根和中根以及中根和后根建立一颗二叉树(Java语言实现)
- 数据结构之基于Java的二叉树实现
- 数据结构之二叉树总篇(Java)
- Java之美[从菜鸟到高手演变]之数据结构基础之树、二叉树
- Java之美[从菜鸟到高手演变]之数据结构基础之树、二叉树
- Java之美[从菜鸟到高手演变]之数据结构基础之树、二叉树
- 数据结构与算法 Java语言描述-源代码