由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求教一道面试题
相关主题
求问把二叉树的recursive遍历改为stack实现的思路二叉树按层次打印有没有办法换行显示?
一道面试题请教一个二叉树镜像问题
一道面试题:Flatten a multilevel linked list微软面试的一道题
请教一道面试题问个二叉树删除结点的问题
题目: iterative binary tree post order traversal如何随机找二叉树中的任意节点?
二叉树最长路径 用 level order travel 做?请教一道g算法题
用BFS 和 inorder 重构二叉树?遍历二叉树除了recursion还有啥好办法?
热腾腾的 LinkedIn 电面题攒RPMS面试题
相关话题的讨论汇总
话题: node话题: left话题: l2r话题: null话题: right
进入JobHunting版参与讨论
1 (共1页)
m********f
发帖数: 238
1
一个二叉树,请按照“之”字型打印输出。
例如,二叉树如下
1
/ \
2 3
/ \ / \
4 5 6 7
/\ / \ / \ / \
8 9 10 11 12 13 14 15
输出顺序为:
1 2 3 7 6 5 4 8 9 10 11 12 13 14 15
如果要求按照这个顺序存成链表,又如何解答?
l****c
发帖数: 782
2
BFS?
m******t
发帖数: 4077
3
stack, queue, stack, queue...

【在 m********f 的大作中提到】
: 一个二叉树,请按照“之”字型打印输出。
: 例如,二叉树如下
: 1
: / \
: 2 3
: / \ / \
: 4 5 6 7
: /\ / \ / \ / \
: 8 9 10 11 12 13 14 15
: 输出顺序为:

b******g
发帖数: 77
4
#include
#include
void printZ(Node * root)
{
bool l2r = true;
stack S1, S2;
stack S1.push(root);
Node * node;
while ( !S1.empty() || !S2.empty())
{
if (l2r)
{
while ( !S1.empty())
{
v = S1.top();
S1.pop();
cout << node->value;
if (node -> left != NULL)
S2.push(node -> left);
if (node -> left != NULL)
S2.push(node -> right);
}
else
{
while (!S2.empty())
{
v = S2.top();
S2.pop();
cout << node -> value;
if (node -> right != NULL)
S1.push(node -> right);
if (node -> left != NULL)
S1.push(node -> left);
}
l2r = ~l2r;
}

【在 m********f 的大作中提到】
: 一个二叉树,请按照“之”字型打印输出。
: 例如,二叉树如下
: 1
: / \
: 2 3
: / \ / \
: 4 5 6 7
: /\ / \ / \ / \
: 8 9 10 11 12 13 14 15
: 输出顺序为:

g****y
发帖数: 240
5
stack s1, s2;
s1.push(T);
while(!s1.empty() || !s2.empth())
{
if(!s1.empty())
{
Node* n = s1.top();
s1.pop();
cout << n->val << " ";
if(n->right) s2.push(n->right);
if(n->left) s2.push(n->left);
}
else // s2 is not empty
{
Node* n = s2.top();
s2.pop();
cout << n->val << " ";
if(n->left) s2.push(n->left);
if(n->right) s2.push(n->right);
}
}
g****y
发帖数: 240
6
错了。。beidapig 的解法是对的。应该在if里面还有一个while循环。。。

【在 g****y 的大作中提到】
: stack s1, s2;
: s1.push(T);
: while(!s1.empty() || !s2.empth())
: {
: if(!s1.empty())
: {
: Node* n = s1.top();
: s1.pop();
: cout << n->val << " ";
: if(n->right) s2.push(n->right);

1 (共1页)
进入JobHunting版参与讨论
相关主题
MS面试题题目: iterative binary tree post order traversal
一个GOOG的二叉树面试题二叉树最长路径 用 level order travel 做?
一道MS面试题用BFS 和 inorder 重构二叉树?
来个原创面试题,逗大家玩热腾腾的 LinkedIn 电面题攒RP
求问把二叉树的recursive遍历改为stack实现的思路二叉树按层次打印有没有办法换行显示?
一道面试题请教一个二叉树镜像问题
一道面试题:Flatten a multilevel linked list微软面试的一道题
请教一道面试题问个二叉树删除结点的问题
相关话题的讨论汇总
话题: node话题: left话题: l2r话题: null话题: right