【刷题之路】二叉树先序序列化

原创 2016年05月31日 09:53:24

将一颗二叉树先序遍历并输出一个字符串,每个数字后加‘!’作为分隔,空节点记为‘#!’

class TreeToString {
public:
    string toString(TreeNode* root) {
        string res;
        string temp;
        stack<TreeNode*> p1;
        TreeNode* cur;
        p1.push(root);
        while(!p1.empty()){   //利用循环先序遍历二叉树
            cur=p1.top();
            p1.pop();
            if(cur==NULL){
                res+="#!"; 
                continue;
            }
            temp=str1(cur->val);  //整型转字符串,可以替换为sprintf函数,功能一样
            temp+='!';
            res+=temp;
            if(cur) p1.push(cur->right);  //即时左右孩子节点为空,依然押入,只有当当前节点为空时停止,与二叉树先序遍历稍有不同
            if(cur) p1.push(cur->left);
            else res+="#!"; 
        }
        return res;
    }
    string str1(int a){
        std::stringstream ss; //字符串流std ,将节点val变为字符串

        ss << a;
return  ss.str();
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【递归】Vijos P1132 求二叉树的先序序列(NOIP2001普及组第三题)

题目链接:   https://vijos.org/p/1132 题目大意:   给定二叉树的中序和后序遍历,求该二叉树先序遍历。 题目思路:   【递归】   这题妥妥递归。   二叉树先序根左右,...

牛客网刷题之序列化二叉树

题目描述:解题思路:  首先我们得知道序列化是怎样的。二叉树序列化时,如果结点 不为空时,在转化val所得的字符之后添加一个’ , ‘作为分割如果是空节点则以 ‘#,‘ 代替。我们可以使用前序遍历,...

给出先序和中序序列,还原二叉树的规律方法

给出先序和中序序列,还原二叉树的规律方法

Java先序序列构造二叉树

BinaryTree.java package com.anjoyo.data_structures.tree; import java.util.Scanner; /** * 先序序列构造...

由先序和中序序列建立二叉树

已知某棵二叉树具有n(n>0)个不同的节点,其先序序列是a0a1a2....an-1,中序序列是b0b1b2...bn-1。 因为在先序遍历过程中,访问根节点后,紧跟着遍历左子树,最后再遍历右子树。...

LeetCode 331. Verify Preorder Serialization of a Binary Tree(校验二叉树的前序遍历序列化)

原题网址:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/ One way to seri...

常见面试题的解法之二叉树(广度优先,序列化)

二叉树广度优先遍历,打印时连同行号一起打印; 解题思路: 1.初始化时,last=1,把1放入队列;2.将1出队,把1的子孩子2,3放入队列,更新nlast=3;3.nlast更新完之后,打...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)