zoukankan      html  css  js  c++  java
  • LeetCode814 二叉树剪枝

    给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。

    返回移除了所有不包含 1 的子树的原二叉树。

    ( 节点 X 的子树为 X 本身,以及所有 X 的后代。)

    非常简单一个递归就可以解决,但是要注意两点:一是一定要检查完两个子树和本身之后再返回,不要出现检查完左子树为true就返回,这样可能没有正确删除右子树;二是当整个树都为0的时候要返回nullptr,要注意判断。

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     TreeNode* pruneTree(TreeNode* root) {
    13         bool ret=recursive_delete(root);
    14         if(ret)
    15             return root;
    16         else   
    17             return nullptr;
    18     }
    19 
    20     bool recursive_delete(TreeNode* curNode){
    21         if(curNode==nullptr)
    22             return false;
    23         bool ret=false;
    24         if(recursive_delete(curNode->left)==false)
    25             curNode->left=nullptr;
    26         else
    27             ret=true;
    28         if(recursive_delete(curNode->right)==false)
    29             curNode->right=nullptr;
    30         else 
    31             ret=true;
    32         if(curNode->val==1)
    33             ret=true;
    34         return ret;
    35     }
    36 };
  • 相关阅读:
    pair和map
    lower_bound( )和upper_bound( )
    P1886 滑动窗口 /【模板】单调队列
    数的度(数位dp)
    最小生成树
    刷题-力扣-1052. 爱生气的书店老板
    刷题-力扣-766. 托普利茨矩阵
    刷题-力扣-28. 实现 strStr()
    刷题-力扣-697. 数组的度
    刷题-力扣-1004. 最大连续1的个数 III
  • 原文地址:https://www.cnblogs.com/rookiez/p/13374342.html
Copyright © 2011-2022 走看看