3143 二叉树的序遍历codevs

题目描述 Description

求一棵二叉树的前序遍历,中序遍历和后序遍历

输入描述 Input Description

第一行一个整数n,表示这棵树的节点个数。

接下来n行每行2个整数L和R。第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号。

输出描述 Output Description

输出一共三行,分别为前序遍历,中序遍历和后序遍历。编号之间用空格隔开。

样例输入 Sample Input

5

2 3

4 5

0 0

0 0

0 0

样例输出 Sample Output

1 2 4 5 3

4 2 5 1 3

4 5 2 3 1

数据范围及提示 Data Size & Hint

n <= 16

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n;
struct node{
    int z;
    int y;
    int j;
}tree[1000];
void qian(int x)
{
    printf("%d ",tree[x].j);
    if(tree[x].z!=0)qian(tree[x].z);
    if(tree[x].y!=0)qian(tree[x].y);
}

void zhong(int x)
{
    if(tree[x].z!=0)zhong(tree[x].z);
        printf("%d ",tree[x].j);
    if(tree[x].y!=0)zhong(tree[x].y);
}

void hou(int x)
{
    if(tree[x].z!=0)hou(tree[x].z);
    if(tree[x].y!=0)hou(tree[x].y);
    printf("%d ",tree[x].j);
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>tree[i].z;
        cin>>tree[i].y;
        tree[i].j=i;
    }
    qian(1);
    cout<<endl;
    zhong(1);
    cout<<endl;
    hou(1);
    cout<<endl;
    return 0;
}
时间: 2024-10-10 16:07:26

3143 二叉树的序遍历codevs的相关文章

3143 二叉树的序遍历

3143 二叉树的序遍历 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号. 输出描述 Output Description 输出一共三行,分别为前序遍历,中序遍历和后序遍历.编号之间用空格隔开

3143 二叉树的序遍历——http://codevs.cn/problem/3143/

第一部分:题目 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号. 输出描述 Output Description 输出一共三行,分别为前序遍历,中序遍历和后序遍历.编号之间用空格隔开. 样例输入 Sample Input 5 2 3 4 5 0 0 0 0 0 0 样例输出 Sam

codevs 3143 二叉树的序遍历

递归 #include <iostream> #include <vector> #include <sstream> #include <string> #include <cmath> #include <stack> using namespace std; int pan[17]={0}; int l[17]; int r[17]; ///先根访问节点, ///对节点是访问 对树是遍历子树 ///最简单的访问shi输出 voi

codevs3143 二叉树的序遍历

难度等级:白银 3143 二叉树的序遍历 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号. 输出描述 Output Description 输出一共三行,分别为前序遍历,中序遍历和后序遍历.编号之间用空格隔开. 样例输入 Sample Input 5 2 3 4 5 0 0 0 0

数据结构之 二叉树---求二叉树后序遍历和层次遍历(先建树,再遍历)

数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历. 输入 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据.每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列. 输出 每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列 示例输入 2 abdegcf dbgeaf

数据结构_二叉树先序遍历

/* 二叉树先序遍历 思路: 1,先访问当前结点,将其入栈(其可能有右孩子) 2,若其存在左结点,执行1 3,若不存在左结点,则将栈顶元素出栈,若其不存在右孩子,继续出栈,若有右孩子,执行1 */ void pre_Order(BTree T) { InitStack(S); BiTree pCur=T; while(pCur || !IsEmpty(S)) //这里的IsEmpty好像不需要 { visit(pCur); Push(S,pCur); pCur = pCur->lchild; w

Leetcode: Binary Tree Inorder Traversal(二叉树中序遍历)

题目: Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 2 / 3 return [1,3,2]. Note: Recursive solution is trivial, could you do it iteratively? 递归解法(C++): /** * Definition for binary tre

94 Binary Tree Inorder Traversal(二叉树中序遍历Medium)

题目意思:二叉树中序遍历,结果存在vector<int>中 解题思路:迭代 迭代实现: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Soluti

数据结构实验之求二叉树后序遍历和层次遍历

数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历. 输入 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据.每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列. 输出 每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列 示例输入 2