/* 递归解法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; }