Code & Func
2019-12-11

第35天。

今天的题目是Binary Tree Pruning:

简单题,用先序遍历做就好了,而且不需要使用flagcount等额外的变量来判断是否要删除当前节点。

大概逻辑如下:

先序遍历时,用left = pruneTree(left)的方式去调用,在遍历完子树后,当前节点的子树都是只包含1的树了,我们可以通过判断指针是否为空来确定子树中是否有1,进而判断出是否要删除当前节点,所以我们不需要维护额外的变量来判断。

1
TreeNode* 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
}
上一条动态