判断随机树是否是满二叉树(未完成)

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;
	}
}

发布了133 篇原创文章 · 获赞 37 · 访问量 4742

猜你喜欢

转载自blog.csdn.net/qq_43416157/article/details/104233455