Leetcode - Count Univalue Subtrees

My code:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    int counter = 0;
    public int countUnivalSubtrees(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        helper(root);
        return counter;
    }
    
    private int helper(TreeNode root) {
        if (root.left == null && root.right == null) {
            counter++;
            return root.val;
        }
        else if (root.left == null) {
            int ret = helper(root.right);
            if (ret == -1) {
                return -1;
            }
            else if (ret != root.val) {
                return -1;
            }
            else {
                counter++;
                return ret;
            }
        }
        else if (root.right == null) {
            int ret = helper(root.left);
            if (ret == -1) {
                return -1;
            }
            else if (ret != root.val) {
                return -1;
            }
            else {
                counter++;
                return ret;
            }
        }
        else {
            int ret1 = helper(root.left);
            int ret2 = helper(root.right);
            if (ret1 == -1 || ret2 == -1) {
                return -1;
            }
            else {
                if (ret1 == root.val && ret2 == root.val) {
                    counter++;
                    return ret1;
                }
                else {
                    return -1;
                }
            }
        }
    }
}

post-order recursion

看了下答案,和我差不多的思路,但写的更加简洁,可能有些情况不用再细分了。

Anyway, Good luck, Richardo! -- 09/06/2016

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • My code: My test result: 这道题目最简单的做法,就是直接随便遍历。但肯定是不对的,太慢了。...
    Richardo92阅读 1,076评论 0 1
  • My code: My test result: 这道题目还是比较简单的,但是还是过了好几次才pass。这是不好的...
    Richardo92阅读 430评论 0 1
  • 10月24日,我大队刘兰中队联合县局设卡人员,在柏林子执法服务点对过往车辆进行严格查控,严查各类交通违法行为,确保...
    孔得锐阅读 255评论 0 0
  • 你以为宫寒只是子宫寒冷?错了!宫寒=孩子不来+子宫肌瘤+卵巢衰退! 2017-09-15 艾众生 你以为宫寒只是子...
    巴青扎巴阅读 632评论 2 2
  • 独行小区间 阳光暖 树荫浓 蓝天拥抱着白云 绿草映衬着小花 心中歌儿荡漾 赴一个约会 水库横卧在山脚 绿树掩映着...
    创造全新幸福生活阅读 277评论 0 1