二叉树层次遍历,要求空间复杂度O(一),时间复杂度O(n)
二叉树层次遍历,要求空间复杂度O(1),时间复杂度O(n)
二叉树层次遍历,要求空间复杂度O(1),时间复杂度O(n),请大家帮忙给个算法,谢谢
------解决方案--------------------
利用队列啊.
头结点入队列,#入队列.
每次取队首,然后把孩子全部入队列,遇到#的时候说明上一行已经结束了,当前行要开始了,所以此刻应该再插入一个#
------解决方案--------------------
用队列吧
1. Status LevelTraverseBiTree(BiTree T)
2. { LinkQueue Q;
3. InitQueue(Q);
4. BiTree u;
5. u=(BiTree)malloc(sizeof(BiTNode));
6. EnQueue(Q, T);
7. while(Q.front!=Q.rear)
8. {
9. DeQueue(Q, u);
10. printf("%c",u->data);
11. if(u->lchild)
12. EnQueue(Q, u->lchild);
13. if(u->rchild)
14. EnQueue(Q, u->rchild);
15. }
二叉树层次遍历,要求空间复杂度O(1),时间复杂度O(n),请大家帮忙给个算法,谢谢
------解决方案--------------------
利用队列啊.
头结点入队列,#入队列.
每次取队首,然后把孩子全部入队列,遇到#的时候说明上一行已经结束了,当前行要开始了,所以此刻应该再插入一个#
------解决方案--------------------
用队列吧
1. Status LevelTraverseBiTree(BiTree T)
2. { LinkQueue Q;
3. InitQueue(Q);
4. BiTree u;
5. u=(BiTree)malloc(sizeof(BiTNode));
6. EnQueue(Q, T);
7. while(Q.front!=Q.rear)
8. {
9. DeQueue(Q, u);
10. printf("%c",u->data);
11. if(u->lchild)
12. EnQueue(Q, u->lchild);
13. if(u->rchild)
14. EnQueue(Q, u->rchild);
15. }