美文网首页
二叉树先序遍历

二叉树先序遍历

作者: qratosone | 来源:发表于2016-03-01 00:07 被阅读0次

Paste_Image.png

Sample Input:
6
Push 1
Push 2
Push 3
Pop
Pop
Push 4
Pop
Pop
Push 5
Push 6
Pop
Pop


Sample Output:(输出为后序遍历)
3 4 2 6 5 1


这个问题中,push的顺序实际上就是先序遍历的顺序——对于非递归先序遍历,算法流程为从根节点出发,一边沿左孩子访问访问一边将右孩子节点收入到栈中,当左孩子访问到末尾,即left=NULL时,从栈中弹出一个元素继续执行,直至栈空

对于这个问题,可以看出对于沿左路一路push的操作,实际上就是先序遍历操作——首先从根节点开始按照VLR的顺序进行访问,如果检测到push操作就将当前节点初始化,然后设置为输入的数字,如果为pop就设置为NULL,递归调用左右孩子节点即可。

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int N;
class Node {
public:
    int num;
    Node* left;
    Node* right;
    Node() {
        left = NULL;
        right = NULL;
    }
};
int counter = 0;
string op;
int num;
Node* preOrder() {
    Node* root = NULL;
    if (counter < 2 * N) {
        cin >> op;
        if (op.length() == 4)
        {
            cin >> num;
            root = new Node();
            root->num = num;
            counter++;
        }
        if (op.length() == 3)
        {
            counter++;
            return NULL;
        }
        root->left = preOrder();
        root->right = preOrder();
    }
    return root;
        
}
vector<int>post;
void postOrder(Node* root) {
    if (root != NULL) {
        postOrder(root->left);
        postOrder(root->right);
        post.push_back(root->num);
    }
}
int main()
{

    cin >> N;
    Node* root = preOrder();
    postOrder(root);
    cout << post[0] ;
    for (int i = 1; i < N; i++)
    {
        cout << ” ” << post[i] ;
    }
    cout << endl;
    return 0;
}

相关文章

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 重建二叉树与寻找下一个节点

    一、重建二叉树 题目:输入某二叉树的先序遍历和中序遍历的结果,请重建二叉树。假如输入的先序遍历和中序遍历的结果都不...

  • Java 二叉树

    创建一个二叉树对象 build 一个二叉树 遍历 先序遍历 后序遍历 中序遍历 先序遍历的结果为:0 1 3...

  • 数据结构与算法二叉树的遍历与线索二叉树以及森林

    1.二叉树的遍历先序遍历、中序遍历、后序遍历 2.层次遍历利用队列实现 3.由遍历序列构成二叉树先序、后序可以与众...

  • 二叉树遍历算法

    二叉树遍历算法有4种,先序、中序、后序和层序遍历 先序遍历:先根、后左、再右中序遍历:先左、后根、再右后序遍历:先...

  • 二叉树-遍历算法

    先序遍历 思路:先根节点->左子树->右子树;二叉树如下图: 先序遍历结果:ABDEGCFHI 中序遍历 思路:先...

  • 记一次Tree的遍历

    统计利用先序遍历创建的二叉树的深度 利用先序递归遍历算法创建二叉树并计算该二叉树的深度。先序递归遍历建立二叉树的方...

  • 算法学习

    ### 实现二叉树以及二叉树遍历数据结构递归比较重要 1.先序遍历 先序遍历,就是先遍历根节点然后再遍历左子树,最...

  • 67_二叉树的典型遍历方式

    关键词:先序遍历、中序遍历、后序遍历 0. 先序遍历(Pre-Order Traversal) 二叉树为空:无操作...

  • 二叉树BinaryTree

    Java 实现二叉树的构造以及遍历过程 二叉树遍历(先序、中序、后序)

网友评论

      本文标题:二叉树先序遍历

      本文链接:https://www.haomeiwen.com/subject/fwigkttx.html