是否完全二叉樹

是否完全二叉樹,實現過程如下所示:

package cn.edu.nwu.structs.tree;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author jcm
 *
 *時間 2016年9月3日
 */
public class IsCompeteBinaryTree {
	public static void main(String[] args) {
		BinaryTreeNode root = CreateBinaryTree.createBinaryTree();
		boolean result = isCompeteBinaryTree(root);
		System.out.println(result);
	}
	public static boolean isCompeteBinaryTree(BinaryTreeNode root){
		if(root == null){
			return false;
		}
		Queue<BinaryTreeNode> queue = new LinkedList<BinaryTreeNode>();
		queue.add(root);
		boolean mustHaveChild = false;
		boolean result = true;//結果
		while(!queue.isEmpty()){
			BinaryTreeNode currentTNode = queue.peek();//頭結點
			queue.poll();
			if(mustHaveChild){
				if(currentTNode.leftTreeNode != null || currentTNode.rightTreeNode != null){
					result = false;
					break;
				}
			}else{
				if(currentTNode.leftTreeNode != null && currentTNode.rightTreeNode != null){
					queue.add(currentTNode.leftTreeNode);
					queue.add(currentTNode.rightTreeNode);
				}else if(currentTNode.leftTreeNode != null && currentTNode.rightTreeNode == null){
					mustHaveChild = true;
					queue.add(currentTNode.leftTreeNode);
				}else if(currentTNode.leftTreeNode == null && currentTNode.rightTreeNode != null){
					result = false;
					break;
				}else{
					mustHaveChild = true;
				}
			}
		}
		return result;
	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章