由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Finding deepest node of BST ?
相关主题
MS onsite 面经BFS traverse O(1) space?
M家intern interview都会面什么?讨论一道construct BST level by level的问题
这个BST题目为何错了?二叉树如何判断一个节点是不是在另外两个节点的path上。。。。好像是个老题了。。求解?
一道题:2个BST,按大小顺序打印两棵树的所有节点亚麻三面面经,攒人品,求好运
请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder TraversalFind the node with given value in binary tree in in-order
请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal求教google 电面 answer
G电面面经Tree Question: Longest path from root to a leaf
Write an iterative method that finds depth of a (non-balanced) binary tree.BST insertion
相关话题的讨论汇总
话题: height话题: node话题: int话题: deepest话题: tree
进入JobHunting版参与讨论
1 (共1页)
c***n
发帖数: 921
1
Finding deepest node of tree??
Here is a solution:
- First to find the height of the tree.(do it recursively, O(n) time)
- Then traverses through each node, find the current depth and compare
it with the maxDepth.
- If condition satisfied, print out the item stored in the node.
这是最好方法么?
a***9
发帖数: 364
2
of course not. There is no reason you can't do it one-pass.

【在 c***n 的大作中提到】
: Finding deepest node of tree??
: Here is a solution:
: - First to find the height of the tree.(do it recursively, O(n) time)
: - Then traverses through each node, find the current depth and compare
: it with the maxDepth.
: - If condition satisfied, print out the item stored in the node.
: 这是最好方法么?

C***y
发帖数: 2546
3
弄个全局变量记录当前的depth,再弄两个全局变量,一个记录已知最深的depth,另外
一个记录对应的node
这样一遍就可以了吧

【在 c***n 的大作中提到】
: Finding deepest node of tree??
: Here is a solution:
: - First to find the height of the tree.(do it recursively, O(n) time)
: - Then traverses through each node, find the current depth and compare
: it with the maxDepth.
: - If condition satisfied, print out the item stored in the node.
: 这是最好方法么?

g***s
发帖数: 3811
4
no. one scan is ok and extra O(depth(tree)) space(just for recursive
stack) is enough.
some one already gave the algo in today's post.

time)
compare

【在 c***n 的大作中提到】
: Finding deepest node of tree??
: Here is a solution:
: - First to find the height of the tree.(do it recursively, O(n) time)
: - Then traverses through each node, find the current depth and compare
: it with the maxDepth.
: - If condition satisfied, print out the item stored in the node.
: 这是最好方法么?

g**e
发帖数: 6127
5
O(n) time one pass
public static int findDiameter(BST t) {
return findDiameter(t.root, new Height(0));
}

private static int findDiameter(Node n, Height h) {
if (n==null) {
h.height = 0;
return 0;
}

Height lheight = new Height(0);
Height rheight = new Height(0);
int ldiameter = findDiameter(n.left, lheight);
int rdiameter = findDiameter(n.right, rheight);

h.height = 1 + max(lheight.height, rheight.height);

return max(lheight.height+rheight.height+1, max(ldiameter,
rdiameter));
}

private static int max(int a, int b){
return a>b?a:b;
}

private static class Height {
int height = 0;

public Height(int h){
this.height = h;
}
}

【在 g***s 的大作中提到】
: no. one scan is ok and extra O(depth(tree)) space(just for recursive
: stack) is enough.
: some one already gave the algo in today's post.
:
: time)
: compare

i**********e
发帖数: 1145
6
Why not use BFS?
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
c******t
发帖数: 391
7
你那个方法是说以每个结点作为root来traversal?感觉这样的结果不是最深的结点,
而是这个BST的diameter诶,不知道对不对。

【在 c***n 的大作中提到】
: Finding deepest node of tree??
: Here is a solution:
: - First to find the height of the tree.(do it recursively, O(n) time)
: - Then traverses through each node, find the current depth and compare
: it with the maxDepth.
: - If condition satisfied, print out the item stored in the node.
: 这是最好方法么?

r******r
发帖数: 700
8
这个运行了一下,好像不对。 the path to the deepest node 就是树的 height. 如
果计算 height:
int height(BSTNode node) {
if (node == null)
return 0;
else
return Math.max(height(node.left), height(node.right)) + 1;
}
这就可以吧。height 的定义:
“The height of a tree is the length of the path from the root to the deepest node in the tree. A (rooted) tree with only one node (the root) has a height of zero.”
不过原问题好像是要找到 nodes, 那应该是 a list of nodes that have
the same biggest depth (tree's height). Something like:
ArrayList> deepestNodes(BSTNode node){
}

【在 g**e 的大作中提到】
: O(n) time one pass
: public static int findDiameter(BST t) {
: return findDiameter(t.root, new Height(0));
: }
:
: private static int findDiameter(Node n, Height h) {
: if (n==null) {
: h.height = 0;
: return 0;
: }

g**e
发帖数: 6127
9
你说的对,我没仔细看题。我的code是找BST的diameter,跟height不是一回事。
diameter可以比height大。

have

【在 r******r 的大作中提到】
: 这个运行了一下,好像不对。 the path to the deepest node 就是树的 height. 如
: 果计算 height:
: int height(BSTNode node) {
: if (node == null)
: return 0;
: else
: return Math.max(height(node.left), height(node.right)) + 1;
: }
: 这就可以吧。height 的定义:
: “The height of a tree is the length of the path from the root to the deepest node in the tree. A (rooted) tree with only one node (the root) has a height of zero.”

r******r
发帖数: 700
10
如果计算 deepest node 的整数值,那就是树的高度吧:
“The height of a tree is the length of the path from the root to the
deepest node in the tree. A (rooted) tree with only one node (the root) has
a height of zero.”
这个整值只有一个,就是树的高度。但这个问题的本意好像不是计算树的高度。
但如果要找出具体的 nodes,可能有多个。
看了网上一些相关话题,好像 depth 和 height 的概念有些混淆。比如有计算 最大深
度 的讨论,
public int maxDepth(BSTNode node) {
if (node == null) return 0;
int left = maxDepth(node.left);
int right = maxDepth(node.right);
return 1 + Math.max(left, right);
}
这个不就是 height 吗。

【在 g**e 的大作中提到】
: 你说的对,我没仔细看题。我的code是找BST的diameter,跟height不是一回事。
: diameter可以比height大。
:
: have

g**e
发帖数: 6127
11
我理解的BST depth=height, diameter=任意两个节点之间的最长距离

has

【在 r******r 的大作中提到】
: 如果计算 deepest node 的整数值,那就是树的高度吧:
: “The height of a tree is the length of the path from the root to the
: deepest node in the tree. A (rooted) tree with only one node (the root) has
: a height of zero.”
: 这个整值只有一个,就是树的高度。但这个问题的本意好像不是计算树的高度。
: 但如果要找出具体的 nodes,可能有多个。
: 看了网上一些相关话题,好像 depth 和 height 的概念有些混淆。比如有计算 最大深
: 度 的讨论,
: public int maxDepth(BSTNode node) {
: if (node == null) return 0;

r******r
发帖数: 700
12
root
node_k
node_n
我理解的是从 root -> node_k 的距离,是 node_k 的 depth;
从 node_k -> node_n 的距离,是 node_k 的 height
root's height = depth of node_n
root's depth = 0
node_n's height =0;
node_k's height = node_n - node_k
到 root 的最大相等路径的 leaf node 可能有多个,所以 deepest nodes 可能有多个。
from wiki:
# The depth of a node n is the length of the path from the root to the node.
The set of all nodes at a given depth is sometimes called a level of the
tree. The root node is at depth zero.
# The height of a tree is the length of the path from the root to the
deepest node in the tree. A (rooted) tree with only one node (the root) has
a height of zero.
g**e
发帖数: 6127
13
我的意思是对一整棵BST来说的, 不是针对某个node。我觉得对一个BST来说,它的高
度和深度是一回事

个。
node.
has

【在 r******r 的大作中提到】
: root
: node_k
: node_n
: 我理解的是从 root -> node_k 的距离,是 node_k 的 depth;
: 从 node_k -> node_n 的距离,是 node_k 的 height
: root's height = depth of node_n
: root's depth = 0
: node_n's height =0;
: node_k's height = node_n - node_k
: 到 root 的最大相等路径的 leaf node 可能有多个,所以 deepest nodes 可能有多个。

d*******l
发帖数: 338
14
也有书上说二叉树高度和深度是差1的关系,对于单个节点好像缺乏特别权威特别统一
的定义。
不过这个题目到没有这种歧义。BFS应该就行

【在 g**e 的大作中提到】
: 我的意思是对一整棵BST来说的, 不是针对某个node。我觉得对一个BST来说,它的高
: 度和深度是一回事
:
: 个。
: node.
: has

1 (共1页)
进入JobHunting版参与讨论
相关主题
BST insertion请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal
讨论Amazon的一道题:根节点到叶节点之间最小和,并打印路径请教大家一个问题:Maximum Height (Depth) of a Binary Tree Using PreOrder Traversal
讨论一道L的validate binary tree和求深度的问题G电面面经
bst中序遍历c++ class iteratorWrite an iterative method that finds depth of a (non-balanced) binary tree.
MS onsite 面经BFS traverse O(1) space?
M家intern interview都会面什么?讨论一道construct BST level by level的问题
这个BST题目为何错了?二叉树如何判断一个节点是不是在另外两个节点的path上。。。。好像是个老题了。。求解?
一道题:2个BST,按大小顺序打印两棵树的所有节点亚麻三面面经,攒人品,求好运
相关话题的讨论汇总
话题: height话题: node话题: int话题: deepest话题: tree