12.二叉树的序遍历

摘要:
时间限制:1s空间限制:32000KB标题级别:Silver Silver查看运行结果标题描述查找二叉树的前序遍历、中序遍历和后序遍历输入描述InputDescription第一行中的整数n,表示树的节点数。接下来的n行每行有2个整数L和R。第i行中的两个整数Li和Ri表示编号为i的节点的左侧和右侧子编号。样本输入SampleInput52345000000样本输出SampleOutput124534251345231数据范围和提示DataSize&Hintn˂=16代码:#includedesignamespacestd#includestructTree{intdata,child[3];};树[17];Void xx{printf;forif(tree[i].child[j]!Zx;printf;//如果没有左边的子级,则输出当前的点标记,If(tree[i].chile[2]!=0)Zx;//然后访问右边的子级。访问右边的孩子时,还应该访问它的左边子级return;}intmain(){intn;scanf;for{tree[i].data=i;scanf!}xx;printf(“”);zx;printf(“”);hx;printf(“”);return0;}

时间限制: 1 s

 空间限制: 32000 KB

 题目等级 : 白银 Silver

 查看运行结果

题目描述 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

using namespace std;

#include

struct Tree{

       int data,child[3];

};

Tree tree[17];

void xx(int i)

{

              printf("%d ",tree[i].data);

              for(int j=1;j<=2;++j)

              if(tree[i].child[j]!=0)

              xx(tree[i].child[j]);

      

}

void hx(int i)

{

              for(int j=1;j<=2;++j)

              if(tree[i].child[j]!=0)

              hx(tree[i].child[j]);

              printf("%d ",tree[i].data);

      

}

void zx(int i)

{

       if(tree[i].child[1]!=0)//如果有左孩子,就一直找。

       zx(tree[i].child[1]);

       printf("%d ",tree[i].data);//如果没有左孩子,就输出当前点标号,

    if(tree[i].child[2]!=0)

    zx(tree[i].child[2]);//再去访问右孩子,访问右孩子时,也是先访问它的左孩子

       return ;

}

int main()

{

       int n;

       scanf("%d",&n);

       for(int i=1;i<=n;++i)

       {

              tree[i].data=i;

              scanf("%d%d",&tree[i].child[1],&tree[i].child[2]);

       }

       xx(1);

       printf(" ");

       zx(1);

       printf(" ");

       hx(1);

       printf(" ");

       return 0;

}

免责声明:文章转载自《12.二叉树的序遍历》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows远程关机重启10.十进制转m进制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

二叉树的遍历 数据结构和算法46

二叉树的遍历 让编程改变世界 Change the world by program 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。 这里有两个关键词小甲鱼给加红了:次序和访问 二叉树的遍历次序不同于线性结构,线性结构最多也就是分...

二叉树及其遍历方法---python实现

github:代码实现本文算法均使用python3实现 1. 二叉树 1.1 二叉树的定义   二叉树是一种特殊的树,它具有以下特点:  (1)树中每个节点最多只能有两棵树,即每个节点的度最多为2。  (2)二叉树的子树有左右之分,即左子树与右子树,次序不能颠倒。  (3)二叉树即使只有一个子树时,也要区分是左子树还是右子树。 1.2 满二叉树   满二叉...

Leetcode.94.二叉树的中序遍历

94.二叉树的中序遍历 递归遍历 迭代遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),...

中序遍历加后序遍历确定先序遍历

https://www.luogu.com.cn/problem/P1030 1 #define bug(x) cout<<#x<<" is "<<x<<endl 2 #define IO std::ios::sync_with_stdio(0) 3 #include <bits/stdc++.h>...

剑指Offer的学习笔记(C#篇)-- 平衡二叉树(二叉树后序遍历递归详解版)

题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 一 . 题目分析 首先要理解一个概念:什么是平衡二叉树,如果某二叉树中任意的左右子树深度相差不超过1,那么他就是一颗平衡二叉树。如下图: 所以,知道了这个概念之后,回归题目。判断该二叉树是不是平衡二叉树,就要在二叉树每个节点的深度来搞了,肯定要对二叉树进行遍历,但是如何效率最大化,如果从小往上遍历...

二叉树的中序遍历

题目描述: 给定一个二叉树,返回它的中序遍历。 输入: [1,null,2,3] 1 2 / 3 输出: [1,3,2] //go //* Definition for a binary tree node. type TreeNode struct { Val int Left *TreeNode Righ...