tag: 二叉树
思路:
(1)通过先序遍历的方式求解
(2)叶子节点的特点: 左右孩子都为空
也可以用递归方式
package com.zhaochao.tree;
import java.util.Stack;
/**
* Created by zhaochao on 17/1/23.
* 叶子结点的特点: 左右孩子都为空
* 通过先序的方式找到叶子结点
*
*/
public class LeafNumber {
int flag = 0;
public int getCountsOfLeaves(TreeNode root) {
int count = 0;
if(root == null) {
return count;
}
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.push(root);
while(!stack.isEmpty()) {
TreeNode node = stack.pop();
if(node.left == null && node.right == null) {
count++;
}
if(node.right != null) {
stack.push(node.right);
}
if(node.left != null) {
stack.push(node.left);
}
}
return count;
}
//递归求解
public void getCountRec(TreeNode root) {
if(root == null) {
return;
}
if(root.left == null && root.right == null) {
flag++;
}
getCountRec(root.left);
getCountRec(root.right);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(0);
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
root.left = node1;
root.right = node2;
node2.left = node3;
node2.right = node4;
LeafNumber test = new LeafNumber();
int count = 0;
count = test.getCountsOfLeaves(root);
System.out.println("The number of nodes in the tree is " + count);
test.getCountRec(root);
System.out.println("Recursion : the number of nodes in the tree is " + test.flag);
}
}