第35天。
今天的题目是Binary Tree Pruning:
简单题,用先序遍历做就好了,而且不需要使用flag
或count
等额外的变量来判断是否要删除当前节点。
大概逻辑如下:
先序遍历时,用left = pruneTree(left)
的方式去调用,在遍历完子树后,当前节点的子树都是只包含1
的树了,我们可以通过判断指针是否为空来确定子树中是否有1
,进而判断出是否要删除当前节点,所以我们不需要维护额外的变量来判断。
1TreeNode* pruneTree(TreeNode* root) {2 if (root == nullptr) return nullptr;3 root->left = pruneTree(root->left);4 root->right = pruneTree(root->right);5 if (root->left || root->right || root->val == 1) return root;6 delete root;7 return nullptr;8}