由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 求教:根据给定数组创建二叉树
相关主题
Cormen星号题:O(n)遍历二叉树,只能用O(1) extra space大家帮我回忆一下,以前在这里遇见的一个题目
按层遍历二叉树,常量空间,如何做到?这道题贴过没有?
非常菜鸟问题:js里,怎么取key,value删去单向LINKED LIST中的一个节点,假设HEAD is unknown
如何让这个cur变量正确指向新地址[合集] 一个已经排序好的数组,就是一个堆heap吗?
leetcode 一题 (转载)[合集] 给定一个最小堆,如何查找某数是否存在此堆中?
门外汉求教 return statement用法[合集] C#里面的动态数组是怎样定义的?
Java弱弱请救几个小问题问个c++删除链表(linked list)节点的问题
BST查找next lowest 可以达到 O(lg N)? (转载)关于java的二维数组的问题
相关话题的讨论汇总
话题: treenode话题: null话题: 二叉树话题: 数组话题: current
进入Programming版参与讨论
1 (共1页)
l****r
发帖数: 105
1
最近没事刷刷leetcode,碰到几个二叉树问题,测试时创建二叉树手写起来太麻烦(C#
),所以想自己搞个工具,作用是根据给定数组创建二叉树。
初步写出来是这样的:
public static TreeNode CreateBinaryTree(int[] values)
{
TreeNode root = new TreeNode(values[0]);
Queue nodeQueue = new Queue();
nodeQueue.Enqueue(root);
TreeNode current = null;
foreach (var value in values.Skip(1))
{
if (current == null || (current.left != null && current.
right != null))
current = nodeQueue.Dequeue();
TreeNode node = new TreeNode(value);
if (current.left == null)
{
current.left = node;
nodeQueue.Enqueue(current.left);
}
else if (current.right == null)
{
current.right = node;
nodeQueue.Enqueue(current.right);
}
}
return root;
}
这个方法的问题在于没有处理空节点的情况,
现在只能是在给定数组时把空节点置为-1,然后在返回前遍历数组将值为-1的节点置空。
请问有没有办法改进一下,谢谢。
l******s
发帖数: 3045
2
这要看你怎么定义你的数组了,leetcode上的test case不用考虑每一层的2^n个可能性
节点,而只列出定义上一层可能的子节点就行了。
l****r
发帖数: 105
3
谢谢回复,不过我完全没看懂后半句
我的数组定义方式是
new int[] { 5, 4, 8, 11, -1, 13, 4, 7, 2, -1, -1, -1, -1, 5, 1 }
生成下面的二叉树
5
/
4 8
/ /
11 13 4
/ /
7 2 5 1

【在 l******s 的大作中提到】
: 这要看你怎么定义你的数组了,leetcode上的test case不用考虑每一层的2^n个可能性
: 节点,而只列出定义上一层可能的子节点就行了。

l******s
发帖数: 3045
4
我的意思跟你的方法一样。
不过你的数组似乎应该生成下面的树才对
| 5
| / \
| 4 8
| / / \
| 11 13 4
| / \
| 7 2
| / \
|5 1
那么碰到-1就不赋那个相应的指针的值就好了。
j**********3
发帖数: 3211
5
这是哪个题啊?编号多少
1 (共1页)
进入Programming版参与讨论
相关主题
关于java的二维数组的问题leetcode 一题 (转载)
stl iterator has "NULL" like const?门外汉求教 return statement用法
C pass string 问题Java弱弱请救几个小问题
数组分配问题,求教BST查找next lowest 可以达到 O(lg N)? (转载)
Cormen星号题:O(n)遍历二叉树,只能用O(1) extra space大家帮我回忆一下,以前在这里遇见的一个题目
按层遍历二叉树,常量空间,如何做到?这道题贴过没有?
非常菜鸟问题:js里,怎么取key,value删去单向LINKED LIST中的一个节点,假设HEAD is unknown
如何让这个cur变量正确指向新地址[合集] 一个已经排序好的数组,就是一个堆heap吗?
相关话题的讨论汇总
话题: treenode话题: null话题: 二叉树话题: 数组话题: current