Redian新闻
>
英警官误将警犬锁在车中闷死 自杀未遂或被指控(图)
avatar
英警官误将警犬锁在车中闷死 自杀未遂或被指控(图)# pets - 心有所宠
K*n
1
是一般意义的二叉树,不是二叉搜索树(BST)。
对于BST,如果待删节点有两个孩子,那么就可以把左子树最右的叶子结点或者右子树最
左的叶子结点搞上来取代删掉的结点,这样保持BST的性质不变。
假如是个普通的二叉树,怎么办呢……网上找了半天都是BST的,CLRS里面说的也是BST

我想,一个最简单的办法就是随便找一个叶子结点,来取代删掉的结点就可以了,因为
一般二叉树没有说有什么性质的限定,所以就不care了。一般是不是没有给定树的性质
的限定,不必在乎这种一般的二叉树的删除问题?
avatar
i*o
2
想吃有机西兰花,自己种行不行?
★ 发自iPhone App: ChineseWeb 1.0.4
avatar
F*g
3
400刀的那个rebate说要60天之内,Amazon的T1i back order要多久,能不能赶上呢?
有没有谁原来在amazon下单等待的经验说一下?谢谢!
avatar
k*r
4
http://news.wenxuecity.com/messages/201106/news-gb2312-1403018.
据英国《每日邮报》6月28日报道,英国首都伦敦一名警官因为不慎将两只警犬留在
自己车里而造成其死亡,可能面临起诉。
当事人伊恩 克雷文是一名具有30多年警犬喂养和训练经验的警官,曾在伦敦警察
厅设在肯特郡的一个有名的警犬训练中心受训,是英国最杰出的训犬专家之一。6月26
日,伊恩 克雷文带着一只比利时玛利诺犬以及另外一只仅仅5个月大的阿尔萨斯犬到肯
特郡的那个警犬训练中心再次接受晋级培训,而后克雷文把车停在了那里并误将两只警
犬锁在了车里。几个小时之后,已经远在伦敦东部的克雷文才想起自己的车里还关着两
只警犬,便马上打电话报警。上午11时,在当时29℃的高温下,警察打破了克雷文紧闭
的车窗,从中救出了两只已经奄奄一息的警犬,先是把它们放在水中降温,后又火速将
它们送往附近的兽医院,但都于事无补。参与救助那两只警犬的蒂娜 戴尔事后表示,
这是她“一生中最糟糕的一天”,并为这两只警犬的悲惨死亡而难过不已
事发地点:伦敦警察厅设在肯特郡的一个有名的警犬训练中心
事发后,一些动物权益组织呼吁将克雷文警官绳之以法。国际动物保护者协会的负
责人简 克雷默称:不能将狗留在高温的车里是常识。我们相信这是一次不幸的意外,
但认为伦敦警局警犬训练人员应该为他人树立榜样。事发现场附近分明有现成的犬舍,
我们无法理解为什么克雷文警官会将两只警犬放在自己的车里。”
克雷文警官在和同事一起乘车返回训练中心的路上得知了两只警犬的死讯,随后便
急忙跳车。克雷文的同事们在河道边的小路上发现他正试图割腕自杀,于是连忙将他送
往医院。现在克雷文警官已经脱离了生命危险,但他仍将面临法律的惩罚。
那只不幸死亡的比利时玛利诺犬(资料图)
目前,英国皇家防止虐待动物协会已对此案展开调查,并可能将对克雷文警官提起
刑事指控。一旦虐待动物罪名成立,克雷文将面临最长51周的监禁,最多2万英镑(约
合20.6万元人民币)的罚款,并将被终身禁止饲养动物。
2009年,英国诺丁汉郡警官马克 约翰逊也曾因为类似的行为而受到惩罚。当年7月
,时任警局训犬师的马克 约翰逊将两只德国牧羊犬关在车厢内长达7个小时,并最终导
致两只牧羊犬死亡。在接受法庭质询时,约翰逊辩称自己患有抑郁症以及强迫症,而事
发时他全然忘记了车里还有两只牧羊犬这回事。约翰逊警官虽然躲过了牢狱之灾,但被
处以6个月有条件解职,最后又回到警局效力的约翰逊不再担任训犬师。
这只阿尔萨斯犬也遭遇了不幸(资料图)
动物权益保护组织称,夏天车厢内的温度在很短时间内就可以飙升至40摄氏度,因
此如果将犬只留在封闭的车厢内,它们不出20分钟便会死亡。英国皇家防止虐待动物协
会的发言人也表示,他们希望人们都能提高警惕,防止类似的悲剧再次发生。
avatar
h*l
5
难道不是吗?

树最
BST

【在 K*********n 的大作中提到】
: 是一般意义的二叉树,不是二叉搜索树(BST)。
: 对于BST,如果待删节点有两个孩子,那么就可以把左子树最右的叶子结点或者右子树最
: 左的叶子结点搞上来取代删掉的结点,这样保持BST的性质不变。
: 假如是个普通的二叉树,怎么办呢……网上找了半天都是BST的,CLRS里面说的也是BST
: 。
: 我想,一个最简单的办法就是随便找一个叶子结点,来取代删掉的结点就可以了,因为
: 一般二叉树没有说有什么性质的限定,所以就不care了。一般是不是没有给定树的性质
: 的限定,不必在乎这种一般的二叉树的删除问题?

avatar
t*e
6
好种!我每年都种,不过我在五区
avatar
p*d
7
sigh...
avatar
K*n
8
就是,不会考这种问题是吧。好久不复习数据结构,今天写一个非BST的二叉树,写着写
着就遇到这个问题了,手生,莫笑哈。

【在 h**********l 的大作中提到】
: 难道不是吗?
:
: 树最
: BST

avatar
p*n
9
好种,缺点就是一起熟。要拉开时间多种几波。
avatar
x*u
10
...........
avatar
p*2
11

树最
BST
随便找个叶子写起来也不是很简洁吧?

【在 K*********n 的大作中提到】
: 是一般意义的二叉树,不是二叉搜索树(BST)。
: 对于BST,如果待删节点有两个孩子,那么就可以把左子树最右的叶子结点或者右子树最
: 左的叶子结点搞上来取代删掉的结点,这样保持BST的性质不变。
: 假如是个普通的二叉树,怎么办呢……网上找了半天都是BST的,CLRS里面说的也是BST
: 。
: 我想,一个最简单的办法就是随便找一个叶子结点,来取代删掉的结点就可以了,因为
: 一般二叉树没有说有什么性质的限定,所以就不care了。一般是不是没有给定树的性质
: 的限定,不必在乎这种一般的二叉树的删除问题?

avatar
i*h
12
不好种,长老大一棵,能吃的花只有一小朵
avatar
l*o
13
难以理解
这个怎么会忘。。。
avatar
K*n
14
还好啊,就while一下,顺着左边或者右边找到一个叶子,拿上来就行了。反正没有限定
。我主要觉得,想这样的问题是不是很蛋疼……

【在 p*****2 的大作中提到】
:
: 树最
: BST
: 随便找个叶子写起来也不是很简洁吧?

avatar
x*u
15
和父母把孩子忘车上差不多

【在 l*****o 的大作中提到】
: 难以理解
: 这个怎么会忘。。。

avatar
p*2
16

限定
把代码发上来看看。

【在 K*********n 的大作中提到】
: 还好啊,就while一下,顺着左边或者右边找到一个叶子,拿上来就行了。反正没有限定
: 。我主要觉得,想这样的问题是不是很蛋疼……

avatar
p*f
17
前两年不是有个当爹的忘了把孩子送到托儿所,直接开去上班(平时都是
老婆送的)。下午老婆来电问他为啥托儿所打电话说孩子没送去。这个
当爹的才惊恐的想起孩子还在车里呢。可怜的孩子就这么没了。
http://www.sfgate.com/cgi-bin/article.cgi?file=/c/a/2007/07/26/
avatar
K*n
18
Node *del(Node *tree, int n){
Node *nodeFather = tree -> father;
if (tree -> val == n){
if (tree -> left == NULL && tree -> right == NULL){ // a leaf
if (nodeFather -> left == tree){
nodeFather -> left == NULL;
free(tree);
return nodeFather;
}else{
nodeFather -> right == NULL;
free(tree);
return nodeFather;
}
}else if (tree -> left == NULL){
// the node to delete has only one child - right
if (nodeFather -> left == NULL){
// tree is the right child of its father
nodeFather -> right = tree -> right;
free(tree);
return nodeFather;
}else{ // tree is the left child of its father
nodeFather -> left = tree -> right;
free(tree);
return nodeFather;
}
}else if (tree -> right == NULL){
// the node to delete has only one child - left
if (nodeFather -> left == NULL){
nodeFather -> right = tree -> left;
free(tree);
return nodeFather;
}else{
nodeFather -> left = tree -> left;
free(tree);
return nodeFather;
}
} else {
// the node to delete has two children
}
} else { // n not found, continue searching recursively

}
}
后两个else没写,问题就是出现在倒数第二个else,也就是待删节点有两个孩子的情况
,出现了问题,就上来问了。如果是随便找个叶子拿上来的话,那很容易。

【在 p*****2 的大作中提到】
:
: 限定
: 把代码发上来看看。

avatar
l*o
19
以后车里需要加装一个探测生命体的警报装置。。。

【在 x********u 的大作中提到】
: 和父母把孩子忘车上差不多
avatar
p*2
20


还有parent?你原贴里没说呀。

【在 K*********n 的大作中提到】
: Node *del(Node *tree, int n){
: Node *nodeFather = tree -> father;
: if (tree -> val == n){
: if (tree -> left == NULL && tree -> right == NULL){ // a leaf
: if (nodeFather -> left == tree){
: nodeFather -> left == NULL;
: free(tree);
: return nodeFather;
: }else{
: nodeFather -> right == NULL;

avatar
i*s
21
我也想到了。。。幸亏车里有。。。本来是防盗的。。。

【在 l*****o 的大作中提到】
: 以后车里需要加装一个探测生命体的警报装置。。。
avatar
K*n
22
结点定义应该有father的吧:
typedef struct NODE(){
int val;
struct NODE *father;
struct NODE *left;
struct NODE *right;
}Node;

【在 p*****2 的大作中提到】
:
:
: 还有parent?你原贴里没说呀。

avatar
m*h
23
豆腐怎么样了

【在 i*********s 的大作中提到】
: 我也想到了。。。幸亏车里有。。。本来是防盗的。。。
avatar
p*2
24

为什么应该有father呢?

【在 K*********n 的大作中提到】
: 结点定义应该有father的吧:
: typedef struct NODE(){
: int val;
: struct NODE *father;
: struct NODE *left;
: struct NODE *right;
: }Node;

avatar
i*s
25
拆线了。。。
疯了。。。
很high
但是医生又说不能乱动。。。
她已经跳上跳下很多次了。。。
我们很烦很担忧。

【在 m***h 的大作中提到】
: 豆腐怎么样了
avatar
p*2
26

你这个能删除root吗?

【在 K*********n 的大作中提到】
: Node *del(Node *tree, int n){
: Node *nodeFather = tree -> father;
: if (tree -> val == n){
: if (tree -> left == NULL && tree -> right == NULL){ // a leaf
: if (nodeFather -> left == tree){
: nodeFather -> left == NULL;
: free(tree);
: return nodeFather;
: }else{
: nodeFather -> right == NULL;

avatar
n*g
27
可怜。那警官一定难过极了。
avatar
K*n
28
没有写root的问题,这个写得很糙,是只写了很一般的情况

【在 p*****2 的大作中提到】
:
: 你这个能删除root吗?

avatar
y*u
29
人和狗都很可怜!
avatar
K*n
30
好吧,这个确实不是必须定义的。实现不用管,主要是说算法。

【在 p*****2 的大作中提到】
:
: 你这个能删除root吗?

avatar
C*K
31
能做訓犬工作30年, 基本上一定是很愛狗的才能勝任.
有時候就是不知怎麼搞得做出糊塗事.
我有次怎麼找也找不到電視遙控器, 沙發墊子全翻了好幾遍, 抽屜櫃子桌子包包都找不
到...
完全想不起來.... 快瘋了...
晚餐時忽然發現remote躺在冰箱裡....
avatar
p*2
32

所以想写简洁不容易呀。我看你代码行数已经超过30行了,而且有parent,还没有包括
所有情况。
你看能不能写一个不超过30行的,没有parent,的全部代码?

【在 K*********n 的大作中提到】
: 没有写root的问题,这个写得很糙,是只写了很一般的情况
avatar
K*n
33
嗯,没有parent就完全不一样了。如果要简洁的话,那些if的部分确实需要好好整整,
有些条件判断是重复的。

【在 p*****2 的大作中提到】
:
: 所以想写简洁不容易呀。我看你代码行数已经超过30行了,而且有parent,还没有包括
: 所有情况。
: 你看能不能写一个不超过30行的,没有parent,的全部代码?

avatar
K*n
34
谢谢指导,我打算直接写BST版本了,再贴

【在 p*****2 的大作中提到】
:
: 所以想写简洁不容易呀。我看你代码行数已经超过30行了,而且有parent,还没有包括
: 所有情况。
: 你看能不能写一个不超过30行的,没有parent,的全部代码?

avatar
p*2
35

我觉得不是BST的挺好。我今天有时间练练。
主要考虑的是时间复杂度,空间复杂度要最优。还要保持balanced

【在 K*********n 的大作中提到】
: 谢谢指导,我打算直接写BST版本了,再贴
avatar
K*n
36
复杂度我觉得还好,这么写,如果是recursion的话。迭代的不好写。要是搞balance的
话,那就又复杂多了,再拓展到多叉树……哇哈哈

【在 p*****2 的大作中提到】
:
: 我觉得不是BST的挺好。我今天有时间练练。
: 主要考虑的是时间复杂度,空间复杂度要最优。还要保持balanced

avatar
p*2
37
我写了一个
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
avatar
K*n
38
我没有看出问题来,加一个merge确实是简洁了很多,不需要显式讨论被删结点有几个孩
子了!

【在 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:

avatar
Z*Z
39
膜拜

【在 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:

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。