zoukankan      html  css  js  c++  java
  • 面试金典--4.4

    题目描述:给定二叉树,同一深度的放置在同一链表中,深度为D则有D个链表,BFS即可。

     1 #include <iostream>
     2 #include <queue>
     3 #include <climits>
     4 #include <algorithm>
     5 #include <memory.h>
     6 #include <stdio.h>
     7 #include <ostream>
     8 #include <vector>
     9 #include <list>
    10 #include <cmath>
    11 #include <string>
    12 #include <stdexcept>
    13 #include <stack>
    14 using namespace std;
    15 
    16 typedef struct treeNode
    17 {
    18     struct treeNode *left;
    19     struct treeNode *right;
    20     int val;
    21     treeNode(int pval):left(NULL),right(NULL),val(pval)
    22     {
    23 
    24     }
    25 }Node;
    26 
    27 list<list<Node*> > ans;
    28 list<Node*> cur;
    29 list<Node*> parent;
    30 void fun(Node *root)
    31 {
    32     if(root != NULL)
    33     {
    34         //cur = new list<Node*>();
    35         cur.push_back(root);
    36         while(cur.size() > 0)
    37         {
    38             ans.push_back(cur);
    39             parent = cur;
    40             //cur = new list
    41             cur.clear();
    42             Node* tmp;
    43             list<Node *>::iterator it = parent.begin();
    44             for( ; it != parent.end() ; ++it)
    45             {
    46                 tmp = *it;
    47                 cout<<tmp->val<<endl;
    48                 if(tmp->left != NULL)
    49                     cur.push_back(tmp->left);
    50                 if(tmp-> right != NULL)
    51                     cur.push_back(tmp->right);
    52             }
    53         }
    54     }
    55     return;
    56 }
    57 
    58 int main()
    59 {
    60     Node tmp(1);
    61     Node *root = &tmp;
    62     Node tmp2(2);
    63     root->left = &tmp2;
    64 
    65     fun(root);
    66     list<list<Node *> >::iterator it = ans.begin();
    67     for( ; it != ans.end() ; ++it)
    68     {
    69         list<Node*> tmplis = *it;
    70         list<Node *>::iterator it1 = tmplis.begin();
    71         for( ; it1 != tmplis.end() ; ++it1)
    72         {
    73             Node * tmp3 = *it1;
    74             cout<<tmp3->val<<endl;
    75         }
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    今天开通cnblogs了,留下点印记
    在windows下编译xvidcore
    linux下c文件里使用中文引发的编译错误及解决
    ThinkPad T400
    据说IBM欲64亿收购Sun
    Visual Studio 的 DllImport 缺陷
    再整MySQL的中文UTF8问题
    Webbased/online OCR services and demos
    用FileSystemWatcher实现山寨版Second Copy [1]
    以前的帖子没了??
  • 原文地址:https://www.cnblogs.com/cane/p/3795311.html
Copyright © 2011-2022 走看看