Leetcode 94. Binary Tree Inorder Traversal

原创 2016年08月28日 19:05:49

题意:中序遍历二叉树,要求非递归


思路:设置一个栈,给每个节点设置一个标号,代表是否展开过。若未展开过,前序遍历就按right left root ,中序遍历就按 right  root left,后序遍历就按root right left压入栈。发现展开过,就直接放入vector中。循环,至栈为空,得到的vector就是遍历后的结果



/**
 * 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> ret;
        if(root == NULL)
            return ret;
        stack <pair<TreeNode *,bool> > tree;
        //pair<TreeNode *,bool> *p;
        TreeNode *p;
        bool depose;
        
        tree.push(make_pair(root,false));
        while(!tree.empty()){
            p = tree.top().first;
            depose = tree.top().second;
            tree.pop();
            
            if(!depose){//未展开
            
                if(p->right != NULL)            //左子树
                    tree.push(make_pair(p->right,false));
                tree.push(make_pair(p,true));   //根,记为ture,表示已展开过
                if(p->left != NULL)             //右子树
                    tree.push(make_pair(p->left,false));
            }else{
                ret.push_back(p->val);
            }
            
        }
        return ret;
    }
};




LeetCode 94 Binary Tree Inorder Traversal(Python详解及实现)

【题目】 Given a binary tree, return the inordertraversal of its nodes' values.   For example: Given bin...
  • yangjingjing9
  • yangjingjing9
  • 2017年08月10日 16:10
  • 197

【LeetCode】94. Binary Tree Inorder Traversal 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年05月22日 23:59
  • 8063

Leetcode_94_Binary Tree Inorder Traversal

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42876657 Given a binary tre...
  • pistolove
  • pistolove
  • 2015年01月19日 18:34
  • 1267

【LeetCode】【Python】Binary Tree Inorder Traversal

Given a binary tree, return the inorder traversal of its nodes' values. For example: Given bin...
  • u011613729
  • u011613729
  • 2014年07月25日 09:34
  • 2454

Binary Tree Inorder Traversal -- LeetCode

原题链接: http://oj.leetcode.com/problems/binary-tree-inorder-traversal/  通常,实现二叉树的遍历有两个常用的方法:一是用递归,二是使用...
  • linhuanmars
  • linhuanmars
  • 2014年03月01日 05:38
  • 16754

LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)

题目: Given a binary tree, return the inorder traversal of its nodes' values. For example: Gi...
  • u012249528
  • u012249528
  • 2015年07月08日 09:57
  • 815

leetcode-94:Binary Tree Inorder Traversal (Java)

Binary Tree Inorder Traversal  即二叉树的中序遍历。 常见的有两种方法:递归和循环,其中递归调用的栈空间为树的高度,一般为o(logn...
  • wen1158646729
  • wen1158646729
  • 2015年08月18日 15:03
  • 775

【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年06月01日 23:42
  • 5845

LeetCode 105:Construct Binary Tree from Preorder and Inorder Traversal

LeetCode 105: Given preorder and inorder traversal of a tree, construct the binary tree. 给定一个二叉树的...
  • sunao2002002
  • sunao2002002
  • 2015年05月20日 23:09
  • 1037

C++详解Leetcode:105. Construct Binary Tree from Preorder and Inorder Traversal

原题思路通过二叉树的前序遍历和中序遍历来构建二叉树,通过递归可以很容易的解决这个问题,在遇到二叉树的问题,应该习惯先画图再来解决code/** * Definition for a binary t...
  • u014265347
  • u014265347
  • 2017年07月30日 17:34
  • 297
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leetcode 94. Binary Tree Inorder Traversal
举报原因:
原因补充:

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