数据结构之二叉树实现

来源:互联网 发布:ucosii官方源码下载 编辑:程序博客网 时间:2024/05/21 09:55

1.二叉树的原理分析

树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构。二叉树(Binary Tree)是每个节点最多有两个子树的有序树。通常子树被称作“左子树”和“右子树”。

二叉树算法的排序规则:

(1)选择第一个元素作为根节点

(2)之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树

(3)最后按照中序遍历的方式进行输出,则可以得到排序的结果(左→根→右)



8、3、10、1、6、14、4、7、13


2.二叉树实现


package com.vince.bt;/** * 二叉树实现 * @author lamp * */public class BinaryTreeDemo {public static void main(String[] args) {BinaryTree bt = new BinaryTree();bt.add(8);bt.add(3);bt.add(10);bt.add(1);bt.add(6);bt.add(14);bt.add(4);bt.add(7);bt.add(13);bt.print();}}


package com.vince.bt;public class BinaryTree {private Node root;//根节点//添加节点,提供给类外部调用public void add(int data){if(root==null){root = new Node(data);}else{root.addNode(data);}}//输出节点,提供给类外部调用public void print(){if(root!=null){root.printNode();}}//节点类class Node{private int data;//当前节点数据private Node left;//左子树private Node right;//右子树public Node(int data){this.data = data;}//添加节点public void addNode(int data){if(this.data>data){if(this.left==null){this.left = new Node(data);}else{this.left.addNode(data);}}else if(this.data<=data){if(this.right==null){this.right = new Node(data);}else{this.right.addNode(data);}}}//输出节点(中序遍历:左根右)public void printNode(){if(this.left!=null){this.left.printNode();}System.out.print(this.data+" ");if(this.right!=null){this.right.printNode();}}}}


0 0
原创粉丝点击