Trees on the level UVA - 122

不得不说作为二叉树的入门第一题还是很有代表性的;

代码是根据刘汝佳的代码打的,然后自己写了注释就当熟悉一下流程

#include <iostream>
#include <stdio.h>
#include <cstring>
#include <vector>
#include <queue>
#define maxn 1000
using namespace std;
bool failed;
char s[maxn];
struct Node {//用指针定义左子树和右子树
    bool have_value;
    int v;
    Node *left,*right;
    Node():have_value(false),left(NULL),right(NULL){};

};
Node *root;
Node *newnode()
{
    return new Node();//new的同时调用了构造函数
}
void addnode(int v,char*s)
{
    int n=strlen(s);
    Node *u=root;
    for(int i=0;i<n;i++)
    {
        if(s[i]=='L')//如果是l向左走一步
        {
            if(u->left==NULL)

                u->left=newnode();
                u=u->left;

        }
        else if(s[i]=='R'){
            if(u->right==NULL)
                u->right=newnode();
                u=u->right;


        }

    }
    if(u->have_value)  //如果已经赋值返回ture这个主要是给not compile 那个样例做的
        failed=true;
    u->v=v;  //赋值
    u->have_value=true;

}

bool read_input()
{
    failed=false;
    root=newnode();
    for(;;)
    {
        if(scanf("%s",s)!=1)
            return false;
        if(!strcmp(s,"()"))
            break;
        int v;
        sscanf(&s[1],"%d",&v);
        addnode(v,strchr(s,',')+1);
    }
    return true;
}
bool bfs(vector<int>&ans)//宽度优先搜索从上到下从左到右遍历一遍
{
    queue<Node*>q;
    ans.clear();
    q.push(root);
    while(!q.empty())
    {
        Node*u=q.front();
        q.pop();
        if(!u->have_value)
            return false;
        ans.push_back(u->v);
        if(u->left!=NULL)
        {
            q.push(u->left);

        }
        if(u->right!=NULL)
        {
            q.push(u->right);
        }
    }
    return true;
}
int main()
{
    while(read_input())
    {
    vector<int>v;
    if(!bfs(v))
        failed=true;

    if(failed)
        cout<<"not complete"<<endl;
    else {
        vector<int>::iterator it=v.begin();
    for(;it!=v.end();it++)
    {
        if(it!=v.begin())
            cout<<" ";
        cout<<*it;


    }
    cout<<endl;
    }}
        return 0;
}

Trees on the level

07-25

Problem DescriptionnTrees are fundamental in many branches of computer science. Current state-of-the art parallel computers such as Thinking Machines' CM-5 are based on fat trees. Quad- and octal-trees are fundamental to many algorithms in computer graphics. nnThis problem involves building and traversing binary trees. nGiven a sequence of binary trees, you are to write a program that prints a level-order traversal of each tree. In this problem each node of a binary tree contains a positive integer and all binary trees have have fewer than 256 nodes. nnIn a level-order traversal of a tree, the data in all nodes at a given level are printed in left-to-right order and all nodes at level k are printed before all nodes at level k+1. nnFor example, a level order traversal of the tree nnnis: 5, 4, 8, 11, 13, 4, 7, 2, 1. nnIn this problem a binary tree is specified by a sequence of pairs (n,s) where n is the value at the node whose path from the root is given by the string s. A path is given be a sequence of L's and R's where L indicates a left branch and R indicates a right branch. In the tree diagrammed above, the node containing 13 is specified by (13,RL), and the node containing 2 is specified by (2,LLR). The root node is specified by (5,) where the empty string indicates the path from the root to itself. A binary tree is considered to be completely specified if every node on all root-to-node paths in the tree is given a value exactly once. nn nnInputnThe input is a sequence of binary trees specified as described above. Each tree in a sequence consists of several pairs (n,s) as described above separated by whitespace. The last entry in each tree is (). No whitespace appears between left and right parentheses. nnAll nodes contain a positive integer. Every tree in the input will consist of at least one node and no more than 256 nodes. Input is terminated by end-of-file. nn nnOutputnFor each completely specified binary tree in the input file, the level order traversal of that tree should be printed. If a tree is not completely specified, i.e., some node in the tree is NOT given a value or a node is given a value more than once, then the string ``not complete'' should be printedn nnSample Inputn(11,LL) (7,LLL) (8,R)n(5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()n(3,L) (4,R) ()n nnSample Outputn5 4 8 11 13 4 7 2 1nnot complete

Trees on the Level

02-24

Trees are fundamental in many branches of computer science. Current state-of-the art parallel computers such as Thinking Machines' CM-5 are based on fat trees. Quad- and octal-trees are fundamental to many algorithms in computer graphics.nnThis problem involves building and traversing binary trees.nnGiven a sequence of binary trees, you are to write a program that prints a level-order traversal of each tree. In this problem each node of a binary tree contains a positive integer and all binary trees have fewer than 256 nodes.nnIn a level-order traversal of a tree, the data in all nodes at a given level are printed in left-to-right order and all nodes at level k are printed before all nodes at level k+1.nnFor example, a level order traversal of the treennnnis: 5, 4, 8, 11, 13, 4, 7, 2, 1.nnIn this problem a binary tree is specified by a sequence of pairs (n,s) where n is the value at the node whose path from the root is given by the string s. A path is given be a sequence of L's and R's where L indicates a left branch and R indicates a right branch. In the tree diagrammed above, the node containing 13 is specified by (13,RL), and the node containing 2 is specified by (2,LLR). The root node is specified by (5,) where the empty string indicates the path from the root to itself. A binary tree is considered to be completely specified if every node on all root-to-node paths in the tree is given a value exactly once.nnnInputnnThe input is a sequence of binary trees specified as described above. Each tree in a sequence consists of several pairs (n,s) as described above separated by whitespace. The last entry in each tree is (). No whitespace appears between left and right parentheses.nnAll nodes contain a positive integer. Every tree in the input will consist of at least one node and no more than 256 nodes. Input is terminated by end-of-file.nnnOutputnnFor each completely specified binary tree in the input file, the level order traversal of that tree should be printed. If a tree is not completely specified, i.e., some node in the tree is NOT given a value or a node is given a value more than once, then the string ``not complete'' should be printed.nnnSample Inputnn(11,LL) (7,LLL) (8,R)n(5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()n(3,L) (4,R) ()nnnSample Outputnn5 4 8 11 13 4 7 2 1nnot complete

Trees on the level levvvle

09-30

Problem DescriptionrnTrees are fundamental in many branches of computer science. Current state-of-the art parallel computers such as Thinking Machines' CM-5 are based on fat trees. Quad- and octal-trees are fundamental to many algorithms in computer graphics. rnrnThis problem involves building and traversing binary trees. rnGiven a sequence of binary trees, you are to write a program that prints a level-order traversal of each tree. In this problem each node of a binary tree contains a positive integer and all binary trees have have fewer than 256 nodes. rnrnIn a level-order traversal of a tree, the data in all nodes at a given level are printed in left-to-right order and all nodes at level k are printed before all nodes at level k+1. rnrnFor example, a level order traversal of the tree rnrnrnis: 5, 4, 8, 11, 13, 4, 7, 2, 1. rnrnIn this problem a binary tree is specified by a sequence of pairs (n,s) where n is the value at the node whose path from the root is given by the string s. A path is given be a sequence of L's and R's where L indicates a left branch and R indicates a right branch. In the tree diagrammed above, the node containing 13 is specified by (13,RL), and the node containing 2 is specified by (2,LLR). The root node is specified by (5,) where the empty string indicates the path from the root to itself. A binary tree is considered to be completely specified if every node on all root-to-node paths in the tree is given a value exactly once. rnrn rnrnInputrnThe input is a sequence of binary trees specified as described above. Each tree in a sequence consists of several pairs (n,s) as described above separated by whitespace. The last entry in each tree is (). No whitespace appears between left and right parentheses. rnrnAll nodes contain a positive integer. Every tree in the input will consist of at least one node and no more than 256 nodes. Input is terminated by end-of-file. rnrn rnrnOutputrnFor each completely specified binary tree in the input file, the level order traversal of that tree should be printed. If a tree is not completely specified, i.e., some node in the tree is NOT given a value or a node is given a value more than once, then the string ``not complete'' should be printedrn rnrnSample Inputrn(11,LL) (7,LLL) (8,R)rn(5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()rn(3,L) (4,R) ()rn rnrnSample Outputrn5 4 8 11 13 4 7 2 1rnnot complete

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭