/* 遞歸解法O(n) 1. 若是二叉樹爲空,則節點個數爲0; 2. 若是二叉樹不爲空,則二叉樹節點數 = 左子樹節點個數 + 右子樹節點個數+ 1 */ public static int getNodeNumRec(TreeNode root){ if(root == null){//二叉樹爲null return 0; }else{//二叉樹不爲null return getNodeNumRec(root.left)+getNodeNumRec(root.right) + 1; } } /* 迭代解法 O(n) 基本思想同 LevelOrderTraversal,即用一個Queue,在Java裏面能夠用LinkedList來模擬 */ public static int getNodeNum(TreeNode root){ if(root == null){ return 0; } int count = 1; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); while(!queue.isEmpty()){ TreeNode cur = queue.remove(); if(cur.left != null){ queue.add(cur.left); count++; } if(cur.right != null){ queue.add(cur.right); count++; } } return count; }