额。。非递归,那要写树的遍历了。建议用线序遍历写吧。会容易些
int cnt = 0;
stack<TreeNode> stack = new stack<TreeNode>();
stack.Push(root);
while (stack.Count != 0)
{
TreeNode cur = stack.Pop();
if (cur.left == null && cur.right == null) cnt++;
if (cur.right != null) stack.push(cur.right);
if (cur.left != null) stack.push(cur.left);
}
大概是这样的
int cnt = 0;
stack<TreeNode> stack = new stack<TreeNode>();
stack.Push(root);
while (stack.Count != 0)
{
TreeNode cur = stack.Pop();
if (cur.left == null && cur.right == null) cnt++;
if (cur.right != null) stack.push(cur.right);
if (cur.left != null) stack.push(cur.left);
}
大概是这样的