算法中的二叉树 java

来源:互联网 发布:软件测试包括哪些 编辑:程序博客网 时间:2024/05/16 09:50

算法中二叉树的递归定义及遍历

package com.test.zx;import java.util.Arrays;import java.util.Scanner;import javax.swing.RootPaneContainer;//二叉排序树public class Main {public static void main(String[]args){BiTree root=new BiTree(100);root.add(new BiTree(50));root.add(new BiTree(80));root.add(new BiTree(40));root.add(new BiTree(30));root.mid_trav();}}class BiTree{//递归定义法private int v;private BiTree l;//左子树private BiTree r;//右子树public BiTree(int x){v=x;}//构造方法public void add(BiTree the ){if(the.v<v){//比根节点小if(l==null){//左子树为空l=the;}else {l.add(the);//递归}}else{//比根节点大if(r==null){//右子树为空r=the;}else{r.add(the);//递归}}}//中序遍历二叉树public void mid_trav(){if(l!=null){l.mid_trav();//先遍历左子树}System.out.println(v);if(r!=null){r.mid_trav();//再遍历右子树}}}


二叉树畸形(只有左子树或只有右子树)解决方法1:

平衡二叉树法(左右子树高度相差不超过1)
LL型--右旋


RR型--左旋


LR型: 先左旋再右旋


RL型:先右旋,在左旋



改进方法2:红黑树

定义:每个节点是红的或黑的

根节点是黑的

叶子结点,空节点是黑的

一个节点是红的,则它的左右子结点都是黑的

对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点

0 0