zoukankan      html  css  js  c++  java
  • Leetcode: 94. Binary Tree Inorder Traversal

    Description

    Given a binary tree, return the inorder traversal of its nodes' values.

    Example

    Given binary tree [1,null,2,3],
    
    1
     
      2
     /
    3
    
    return [1,3,2].
    
    Note: Recursive solution is trivial, could you do it iteratively?
    

    思路

    • 使用一个栈来保存节点,然后使用一个map来标记已经遍历过的节点

    代码

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<int> inorderTraversal(TreeNode* root) {
            vector<int> res;
            if(!root) return res;
            
            stack<TreeNode*> stk;
            stk.push(root);
            TreeNode *tmp = NULL;
            unordered_map<TreeNode*, bool> hash;
            hash[root] = true;
            while(!stk.empty()){
                tmp = stk.top();
               
                while(tmp->left && hash.count(tmp->left) == 0){
                    stk.push(tmp->left);
                    hash[tmp->left] = true;
                    tmp = tmp->left;
                }
                
                tmp = stk.top();
                stk.pop();
                
                if(tmp->right)
                    stk.push(tmp->right);
                res.push_back(tmp->val);
            }
            
            return res;
        }
    };
    
  • 相关阅读:
    删掉从svn 文件夹里复制出来所带的信息(去掉.svn文件夹)
    AS3 loader
    as3鼠标事件
    linux 随机数
    AS3资源处理
    字符串合并
    linux time.h
    fat32转ntfs
    linux 杂项
    oracle——创建数据表
  • 原文地址:https://www.cnblogs.com/lengender-12/p/7061558.html
Copyright © 2011-2022 走看看