十一屆藍橋模擬賽 十層二叉樹結點 JAVA

一棵10層的二叉樹,最多包含多少個結點?

注意:當一棵二叉樹只有一個結點時爲一層。

思路:一看注意那塊就知道它肯定要搞幺蛾子,我是直接在本本上面畫了五層二叉樹,找到規律後直接上代碼,規律就是2的10次冪-1。答案:1023

第一種的這個解法着實像個憨憨 -.-#

public class Main {
	public static void main(String[] args) {
		int n1 = 1;
		int n2 = 2;
		int n3 = n2 * 2;
		int n4 = n3 * 2;
		int n5 = n4 * 2;
		int n6 = n5 * 2;
		int n7 = n6 * 2;
		int n8 = n7 * 2;
		int n9 = n8 * 2;
		int n10 = n9 * 2;
		System.out.println(n10 + n9 + n8 + n7 + n6 + n5 + n4 + n3 + n2 + n1);
	}
}

第二種的解法,題目要求第一層給固定1,然後枚舉9層。

public class Main  {
	public static void main(String[] args) {
		int ans = 1;
		int num = 1;
		for (int i = 1; i <= 9; i++) {
			num *= 2;
			ans += num;   // 10層節點相加
		}
		System.out.println(ans);  
	}
}

第三種解法,按着規律就是2的10次冪-1,記得給int類型。

public class Main {
	public static void main(String[] args) {
		System.out.println((int) Math.pow(2, 10) - 1);
	}
}

小劇場:要保持思想高度。Keep your mind higt.

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