日期:2014-05-20  浏览次数:20618 次

一道java面试题目,估计n多人都不会做!用java语言写一段代码,要求计算出一个二叉树单节点(只有一个孩子的节点)的个数.
分不够还加呀!

------解决方案--------------------
这个用递归就够了
根节点有2个子节点的话就是 两棵子树中单节点数之和
根节点有1个子节点的话就是 1 + 子树中单节点数
------解决方案--------------------
Java code

public void countNodes(BiTree bt) {
    if (bt.lchild != null && bt.rchild == null) {
        ++count; //设置一个全局计数器
    }
        countNodes(bt.lchild);
        countNodes(bt.rchild);
    }

------解决方案--------------------
有点不对
------解决方案--------------------
Java code

public void countNodes(BiTree bt) {
        if (bt.lchild != null && bt.rchild == null) {
            ++count;
            countNodes(bt.lchild);
        } else if (bt.lchild == null && bt.rchild != null) {
            ++count;
            countNodes(bt.rchild);
        }
    }

------解决方案--------------------
2楼 4楼 不是一样的啊。。。