leetcode222. Count Complete Tree Nodes

2017-09-06
阅读 2 分钟
2.4k
题目要求 {代码...} 计算一个完全二叉树的节点个数。其中完全二叉树是指除了最后一行,其余的每一行都必须是满节点的树。 思路一 :不讲道理的递归 直接返回左子树和右子树的叶结点的个数。当然超时啦 {代码...} 思路二:讲道理的递归 思路一很明显没有充分利用这是一颗完全二叉树的条件。从另一个角度看,一颗完全二叉...

leetcode 94. Binary Tree Inorder Traversal

2017-07-18
阅读 2 分钟
2.2k
这里需要利用栈的数据结构。如果当前节点存在左子节点,则继续遍历左子树直到最后一个左子节点。然后依次处理栈中的元素。如果栈顶元素有右子节点,则将其右子节点压入栈中作为root,再继续遍历root的左子节点。当root和stack都为空时,遍历结束。

leetcode93. Restore IP Addresses

2017-07-18
阅读 2 分钟
1.7k
IP地址由0/1位二进制数字构成,一共分为4个区间,每个区间8位。因此每个区间的值转化到十进制为0~255。那么我们只要划分出这四个区间,然后判断这四个区间的值是否符合标准即可。

leetcode90. Subsets II

2017-07-12
阅读 3 分钟
2.5k
我们可以通过例子[1,2,2,3]来说明。当我们遇到重复值时,我们可以使用一个临时数组将所有重复值的结果临时保存起来,在这道题目中就是[[2],[2,2]],然后再将当前res中的结果和它一一组合成新的结果值,本例子中的当前res为[[ ],[1]],这样合成之后就是[[],[2],[2,2],[1,2],[1,2,2]],从而避免产生重复的结果。代码如下: