C***U 发帖数: 2406 | 1 算法还好的 但是写起来 觉得这个有点难啊 时间不够用啊 |
j*****n 发帖数: 1545 | |
r*****e 发帖数: 792 | 3 这个现场写够呛,只能实行练过才行啊。
写过一次,挺麻烦的,尤其是没有parent ptr时就更麻烦。
【在 C***U 的大作中提到】 : 算法还好的 但是写起来 觉得这个有点难啊 时间不够用啊
|
C***U 发帖数: 2406 | 4 我写了半天才写出来。 感觉面试问这个就够呛了
这个现场写够呛,只能实行练过才行啊。写过一次,挺麻烦的,尤其是没有parent ptr
时就更麻烦。
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite
【在 r*****e 的大作中提到】 : 这个现场写够呛,只能实行练过才行啊。 : 写过一次,挺麻烦的,尤其是没有parent ptr时就更麻烦。
|
p*****2 发帖数: 21240 | 5 只是binary tree吗?
我准备写一个。应该10几行代码能搞定把? |
w*********b 发帖数: 3 | 6 多练才是王道,你要觉得麻烦那说明你还是写的少了。。。
ptr
【在 C***U 的大作中提到】 : 我写了半天才写出来。 感觉面试问这个就够呛了 : : 这个现场写够呛,只能实行练过才行啊。写过一次,挺麻烦的,尤其是没有parent ptr : 时就更麻烦。 : ★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite
|
X*K 发帖数: 87 | 7 15分钟是怎么个说法?记得CRLS里面定义了一个transplant函数,这样会容易一些。 |
p*****2 发帖数: 21240 | 8 我写了一个
def merge(node1, node2):
if node1==None or node2==None:
return node1 if node2==None else node2
node1.right=merge(node2,node1.right)
return node1
def delete(root, node):
if root==None:
return None
elif root==node:
return merge(node.left,node.right)
else:
root.left=delete(root.left,node)
root.right=delete(root.right,node)
return root |
r*****e 发帖数: 792 | 9 is it so simple with python? or is it right? ;-)
i believe deletion of bst involves finding successor, rotate, etc.
admire first
【在 p*****2 的大作中提到】 : 我写了一个 : def merge(node1, node2): : if node1==None or node2==None: : return node1 if node2==None else node2 : node1.right=merge(node2,node1.right) : return node1 : def delete(root, node): : if root==None: : return None : elif root==node:
|
p*****2 发帖数: 21240 | 10
这题不是BST,只是BT
【在 r*****e 的大作中提到】 : is it so simple with python? or is it right? ;-) : i believe deletion of bst involves finding successor, rotate, etc. : admire first
|
d********g 发帖数: 10550 | 11 赞Python
不过PEP8一查,哀鸿遍野。遇到吹毛求疵的考官还要注意一下格式才行
【在 p*****2 的大作中提到】 : 我写了一个 : def merge(node1, node2): : if node1==None or node2==None: : return node1 if node2==None else node2 : node1.right=merge(node2,node1.right) : return node1 : def delete(root, node): : if root==None: : return None : elif root==node:
|
p*****2 发帖数: 21240 | 12
我面试用Java的。Python就是随便玩玩。
【在 d********g 的大作中提到】 : 赞Python : 不过PEP8一查,哀鸿遍野。遇到吹毛求疵的考官还要注意一下格式才行
|
C***U 发帖数: 2406 | 13 膜拜大牛!
【在 p*****2 的大作中提到】 : : 我面试用Java的。Python就是随便玩玩。
|
K*********n 发帖数: 2852 | 14 我也写了一个C的:
Node *del(Node *tree, int n){
Node *tmpNode;
if (tree == NULL)
perror("Element not found.");
else if (tree -> val > n) // go left
tree -> left = del(tree -> left, n);
else if (tree -> val < n)
tree -> right = del(tree -> right, n);
else{ // found n
if (tree -> left && tree -> right){ // two children
tmpNode = findMin(tree -> right);
tree -> val = tmpNode -> val;
tree -> right = del(tree -> right, tmpNode -> val);
}else{ // one or zero child
tmpNode = tree;
if (tree -> left == NULL)
tree = tree -> right;
else if (tree -> right == NULL)
tree = tree -> left;
free(tmpNode);
}
}
return tree;
}
Node *findMin(Node *tree){
if (tree == NULL)
return NLLL;
else if (tree -> left == NULL)
return tree;
else
return findMin(tree -> left);
}
【在 p*****2 的大作中提到】 : 我写了一个 : def merge(node1, node2): : if node1==None or node2==None: : return node1 if node2==None else node2 : node1.right=merge(node2,node1.right) : return node1 : def delete(root, node): : if root==None: : return None : elif root==node:
|