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 };
  • 相关阅读:
    [資料]VS2008技巧
    [資料]MarshalAs的用法
    MS SQL Server 2000安装不成功的原因
    Zend產品線
    [轉]Flex 开发必备10武器
    [轉]C#中的XML注释
    [轉]onpropertychange事件
    [轉]fckeditor添加自定义按钮
    [資源]Web設計資源以及线框工具
    [轉]JS中showModalDialog 详细使用
  • 原文地址:https://www.cnblogs.com/rookiez/p/13374342.html
Copyright © 2011-2022 走看看