由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个题:给定一个节点,找right neighbor
相关主题
Find the node with given value in binary tree in in-order请教两道F面试题的follow up
狗店面,求BLESSAmazon Onsite 面经
min depth binary tree用recursive解法一般能过关麽?python里面怎么表示树?
FB面经Amazon 打印给定node距离最近的K个nodes
关于leetcode上的一道题Interview question::
leetcode交了钱的能share一下题么?GOOG ONSITE 面试
请教一道Leetcode 题,多谢问一个题目
看着简单老是写不对的Binary Tree Zigzag Level Order TraversalTime complexity
相关话题的讨论汇总
话题: parent话题: treenode话题: null话题: given话题: root
进入JobHunting版参与讨论
1 (共1页)
s********u
发帖数: 1109
1
不是right sibling,而是right neighbor。
就是如果做BFS,与给定节点同一层的后面一个。给parent link,但没有root node,
也不能强行找到root之后然后再做BFS(本身那么做就非常低效)
======================================
没想出来,看了别人的思路写了一下,感觉写的非常冗余,不知道能不能优化一下:
TreeNode *findByLvl( TreeNode *root, int lvl ){
if( root == NULL )
return NULL;

if( lvl == 0 )
return root;

TreeNode *left = findByLvl(root->left,lvl+1);
if( left ) return left;
else return findByLvl(root->right,lvl+1);
}
TreeNode* rNeighbor( TreeNode *given ){

TreeNode *parent = given->parent;
int level = -1;

while(parent){

while( parent && parent->left != given ){
given = parent;
parent = given->parent;
level--;
}

if( parent == NULL )
return NULL;

TreeNode *local = findByLvl( parent->right, level + 1);

if(local)
return local;
else{
given = parent;
parent = given->parent;
level--;
}
}

return NULL;

}
l*n
发帖数: 529
2
怎么冗余啊,就是不停以不同的ancestor来找同样lvl的节点,已经是人脑识别模式了
1 (共1页)
进入JobHunting版参与讨论
相关主题
Time complexity关于leetcode上的一道题
请教这么一个题:BST maximum sum pathleetcode交了钱的能share一下题么?
为啥有两个case不对??Binary Tree Maximum Path Sum请教一道Leetcode 题,多谢
Uni_value subtree problem看着简单老是写不对的Binary Tree Zigzag Level Order Traversal
Find the node with given value in binary tree in in-order请教两道F面试题的follow up
狗店面,求BLESSAmazon Onsite 面经
min depth binary tree用recursive解法一般能过关麽?python里面怎么表示树?
FB面经Amazon 打印给定node距离最近的K个nodes
相关话题的讨论汇总
话题: parent话题: treenode话题: null话题: given话题: root