package seven;
/*
* 先有一个根节点,然后每一次都是一个均匀分布产生一个随机数,
* 当随机数大于等于0.5就是根节点的左孩子,小于0.5就是根节点的右孩子
* 若根节点已经有两个孩子,下次再产生的随机数大于等于0.5就进入根节点的左孩子,
* 然后继续产生随机数,和上面一样,大于等于0.5就是当前节点的左孩子,小于0.5就是右孩子
* 若是当前节点也已经满了两个孩子,就继续下一层,一直到这个节点插进去,然后继续从根节点开始
* 一直这样,当这棵树有7个节点的时候就结束,然后利用先序遍历和中序遍历确定这棵树的结构
* 然后进行判断,若这棵树就满二叉树就结束这个程序,否则重新产生树
* 判断满二叉树的方法:
* 1. 可以先是简单的层次遍历看它是不是满二叉树,利用递归
* 2.(题目重点)利用先序遍历进行判断
* 思路:先是叶节点左右节点都是空,所以返回true,再到上一层的节点,
* 若上一层的节点的两个孩子都放回true就继续向上一层返回true,一直到根节点
* 若有返回false的就结束,这棵树不是满二叉树
*/
public class FullTree {
public static void main(String[] args)
{
Node root=new Node("a");
Treelist tree=MakeTree(root);
tree.firstshow(root);
}
public static Treelist MakeTree(Node root)
{
Treelist tree=new Treelist();
tree.root=root;
Node temp=new Node(null);
temp=root;
char data=98;
double equidistribution;
while(true)
{
while(temp!=null)
{
equidistribution=Math.random();
if(equidistribution>=0.5)
{
temp=temp.lchild;
}
if(equidistribution<0.5)
{
temp=temp.rchild;
}
}
temp=new Node(data++);
if(data>=98+7-1)
{
break;
}
}
return tree;
}
}
判断随机树是否是满二叉树(未完成)
猜你喜欢
转载自blog.csdn.net/qq_43416157/article/details/104233455
今日推荐
周排行