leetcode二叉树

Posted 4nc414g0n

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode二叉树相关的知识,希望对你有一定的参考价值。

二叉树进阶

进阶根据二叉树创建字符串

题目链接
题目描述
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对


思路

  1. 面注释代码过不了?????提示

代码如下:

class Solution 
public:
    void _tree2str(TreeNode* root, string& ret)
    
        if(root==nullptr)
            return;
        else
        
            // if(root->val<0) //这个通不过
            // 
            //     root->val*=(-1);
            //     ret.push_back('-');
            //     ret.push_back(root->val+'0');
            // 
            // else
            //     ret.push_back(root->val+'0');
            ret+=to_string(root->val);
        
        if(root->left==nullptr&&root->right==nullptr)
        
            _tree2str(root->left,ret);
            //return;
        
        else if(root->left&&root->right==nullptr)
        
            ret.push_back('(');
            _tree2str(root->left,ret);
            ret.push_back(')');
        
        else if(root->left==nullptr&&root->right)
        
            ret.push_back('(');
            ret.push_back(')');
            ret.push_back('(');
            _tree2str(root->right,ret);
            ret.push_back(')');
        
         else 
            ret.push_back('(');
            _tree2str(root->left,ret);
            ret.push_back(')');
            ret.push_back('(');
            _tree2str(root->right,ret);
            ret.push_back(')');
        
    
    string tree2str(TreeNode* root) 
        string ret;
        //ret.push_back(root->val+'0');
        _tree2str(root, ret);
        return ret;
        
    
;

进阶根据二叉树创建字符串

题目链接
题目描述

输入:
输出:


思路
1.
代码如下:


二叉树的层序遍历(变1)

题目链接
题目描述
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点


思路

  1. 记录每层的size

代码如下:

class Solution 
public:
   vector<vector<int>> levelOrder(TreeNode* root) 
       vector<int> tmp=;
       vector<vector<int>> ret;
       if(root==nullptr)
           return ret;
       
       
       queue<TreeNode*> qu;
       int size=1;
       qu.push(root);
       while(!qu.empty())
       
           while(size--)
           
               if(qu.front()->left)
                   qu.push(qu.front()->left);
               if(qu.front()->right)
                   qu.push(qu.front()->right);
               tmp.push_back(qu.front()->val);
               qu.pop();
           
           ret.push_back(tmp);
           tmp.clear();
           size=qu.size();
       
       return ret;

   
;

以上是关于leetcode二叉树的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷穿二叉树

leetcode刷穿二叉树(完结)

leetcode刷穿二叉树(完结)

leetcode刷穿二叉树(完结)

leetcode刷穿二叉树(完结)

leetcode刷穿二叉树