Leetcode 1448. 统计二叉树中好节点的数目

题目描述

给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。

「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。

C++

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int goodNodes(TreeNode* root) {
        if(root==NULL){
            return 0;
        }
        return 1+dfs(root->left,root->val)+dfs(root->right,root->val); 
    }
    int dfs(TreeNode* root,int parent){
        if(root==NULL){
            return 0;
        }
        if(root->val>=parent){
            return 1+dfs(root->left,root->val)+dfs(root->right,root->val);
        }else{
            return   dfs(root->left,parent)+dfs(root->right,parent);
        }    
    }
};

你可能感兴趣的:(LeetCode,深度优先遍历,C++)