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 }
  • 相关阅读:
    功能检查和降级
    蓄水池问题
    Linux删除大于/小于固定大小的文件等
    理解Faster-RCNN 中的Anchor
    【转】DBSCAN密度聚类算法
    ROC曲线和PR曲线
    LSTM比较RNN
    【转】ROI Pooling
    【转】VGG网络结构及参数
    面试知识点准备(各方面)
  • 原文地址:https://www.cnblogs.com/cane/p/3795311.html
Copyright © 2011-2022 走看看