zoukankan      html  css  js  c++  java
  • Binary Tree Paths leetcode

    Given a binary tree, return all root-to-leaf paths.

    For example, given the following binary tree:

     

       1
     /   
    2     3
     
      5
    

     

    All root-to-leaf paths are:

    ["1->2->5", "1->3"]

     

    Credits:
    Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

     

    很简单的题目,二叉树的遍历,为了追求挑战性,我选择非递归实现

    vector<string> binaryTreePaths(TreeNode* root) {
        vector<string> out;
        if (root == nullptr)
            return out;
        vector<TreeNode*> sta;
        sta.push_back(root);
        TreeNode* lastRoot = root;
        while (!sta.empty())
        {
            root = sta.back();
            if (lastRoot != root->right)
            {
                if (lastRoot != root->left) {
                    if (root->left != nullptr) {
                        sta.push_back(root->left);
                        continue;
                    }
                }
                if (root->right != nullptr) {
                    sta.push_back(root->right);
                    continue;
                }
                else if (root->left == nullptr)
                {
                    string str(to_string(sta[0]->val));
                    for (int i = 1; i < sta.size(); ++i)
                        str.append("->" + to_string(sta[i]->val));
                    out.push_back(str);
                }
            }
            lastRoot = root;
            sta.pop_back();
        }
        return out;
    }

    至于DFS深度遍历,还是老老实实的使用visited标记记录每个节点吧。上面的方法只适用于二叉树

     
  • 相关阅读:
    生产者和消费者,锁,队列
    爬虫日记-xpath来临
    进程进阶
    Entity Framework 复杂类型(转)
    EF Code First 学习笔记:约定配置(转)
    EF Code First学习笔记 初识Code First(转)
    JSON草稿
    JSON实例(单对象)
    JSON语法2
    JSON 语法
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/5164565.html
Copyright © 2011-2022 走看看