814. 二叉树剪枝(二叉树+遍历)

  • 题目链接:814. 二叉树剪枝
  • 考查知识:二叉树+遍历
  • 题意描述:二叉树的结点权值都是0或1,将二叉树中 结点全是0的子树 删去
  • 思路简析:
    • 递归到叶节点处判断叶节点权值,是0则向父节点返回NULL,否则返回当前结点
    • 辨析:其实就是一个后序遍历:叶到根,注意比较树DFS中的前序遍历:根到叶
  • 具体代码
    class Solution {
    public:
        TreeNode* pruneTree(TreeNode* root){
            if(root==NULL)return NULL;
            root->left=pruneTree(root->left);
            root->right=pruneTree(root->right);
            if(root->val==0&&root->left==NULL&&root->right==NULL)return NULL;
            return root; 
        }
    };
    
    • 通过该题得出的一个猜想:删除结点中根节点权值为x的子树,设递归边界if(root==NULL||root->val==x)return NULL;

你可能感兴趣的:(#,数据结构,算法,c++)