二叉树的排序和遍历

2019-10-08  本文已影响0人  勇者与王者
package binaryTree;

import java.util.ArrayList;
import java.util.List;

/**
* 
* @author q06285:
* @version 创建时间:2019年10月8日 上午10:37:41
* 
* 假设通过二叉树对如下10个随机数进行排序
* 67,7,30,73,10,0,78,81,10,74
* 排序的第一个步骤是把数据插入到该二叉树中
* 插入基本逻辑是,小、相同的放左边,大的放右边
* 
* 
*/
public class Node {

    public Node leftNode;
    
    public Node rightNode;
    
    public Object value;
    
    public void add(Object v) {
        if (null == value) {
            value = v;
        } else {
            if ( (Integer)v - (Integer)value <= 0) {
                if ( null == leftNode) {
                    leftNode = new Node();
                }
                leftNode.add(v);
            }
            else {
                if (null == rightNode) {
                    rightNode = new Node();
                }
                rightNode.add(v);
            }
            
        }
        
    }
    
    public static void main(String[] args) {
        int randoms[] = new int[] {67, 7, 30, 73, 10, 0, 78, 81, 10, 74};
        
        Node roots = new Node();
        for (int number : randoms) {
            roots.add(number);
        }
        
        System.out.println(roots.values());
    }
    
    public List<Object> values(){
        List<Object> values = new ArrayList<>();
        
        if (null != leftNode) {
            values.addAll(leftNode.values());
        }
        
        values.add(value);
        
        if (null != rightNode) {
            values.addAll(rightNode.values());
        }
        return values;
    }

}

上一篇 下一篇

猜你喜欢

热点阅读