zoukankan      html  css  js  c++  java
  • 一道算法题目, 二行代码, Binary Tree

    June 8, 2015

    我最喜欢的一道算法题目, 二行代码. 

    编程序需要很强的逻辑思维, 多问几个为什么, 可不可以简化.想一想, 二行代码, 五分钟就可以搞定; 2015年网上大家热议的 Homebrew 的作者 Max Howell 面试

    Google 挂掉的一题, 二叉树反转, 七行代码, 相比二行代码, 情有可原!

    Problem: return the count of binary tree with only one child

    想一想, 你要写几行, 六七行, 或小于十行?

    Solution:  two lines code:

     /**

    * Great arguments:

    1. Since first line is the discussion of “node==null”, there is no need to check node!=null before the function countOneChildNode call.

    2. How to express only one child?

    case 1: left child is not null; in other words, there is a left child: node.left!=null

    case 2: right child is not null; node.right!=null)

    case 3: node has two child

    (node.left!=null) && (node.right!=null)

    case 4: node has only one child (A: left child only, B: right child only, one true, one false; left child existed != right child existed; cannot be both false or both true)

    (node.left!=null)!=(node.right!=null)

    case 5: at least one child (one child or two child)

    (node.left!=null) || (node.right!=null)

    这道题非常好, 通过这道题, 你可以如何简化代码; 如果有一个出色的程序员, 有很强的逻辑思维能力, 想到只有一个孩子, 可以表示为一句话:  (node.left!=null)!=(node.right!=null)

    */

    public static int countOneChildNode(Node node)

    {

    if(node==null) return 0;

    return (((node.left!=null)!=(node.right!=null)?1:0)+countOneChildNode(node.left)+countOneChildNode(node.right));

    }

    Github for source code:

  • 相关阅读:
    2018-2019-2 实验三 敏捷开发与XP实践
    计算机网络课外实验一级 20175319江野
    2018-2019-2 《Java程序设计》第9周学习总结
    MyCP(课下作业,必做)
    [NOIP2012] 疫情控制
    [SPOJ2021] Moving Pebbles
    谁能赢呢?
    [HEOI2014] 人人尽说江南好
    [笔记] 巴什博弈
    [SCOI2008] 着色方案
  • 原文地址:https://www.cnblogs.com/juliachenOnSoftware/p/4697235.html
Copyright © 2011-2022 走看看