春意盎然,适合“二叉树剪枝”
清明假期第 1 天,日日新更文继续 ^_^
天气正好,树木繁茂,不如来道二叉树的 —— 二叉树剪枝 题~🐶
题:
给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。
返回移除了所有不包含 1 的子树的原二叉树。
节点 node 的子树为 node 本身加上所有 node 的后代。
复制代码
复制代码
复制代码
【解题思路】
题目要求剪除二叉树中所有节点的值为 0 的子树,那么怎么知道当前二叉树所有节点的值为 0,使用后序遍历无疑了;递归只需要考虑当前节点需要做什么事情,当前节点能否被剪枝取决于左右子树及当前节点的值;
这道题的难点在于要一直剪枝,直到没有值为 0 的叶子节点为止,只有从后序遍历位置自底向上处理才能获得最高的效率。
【JS 实现】
复制代码
【验证】
<hr>
后序遍历+递归,简单实现,赞👍
版权声明: 本文为 InfoQ 作者【掘金安东尼】的原创文章。
原文链接:【http://xie.infoq.cn/article/39d8833c288d4235f8838612b】。文章转载请联系作者。
评论