码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode: Binary Tree Inorder Traversal

时间:2014-12-04 21:25:46      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   ar   color   sp   for   on   

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

For example:
Given binary tree {1,#,2,3},

   1
         2
    /
   3

 

return [1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

分析:迭代版inorder traversal。对于任何一棵树,其最先被访问的是路径是最左侧的路径,在该最左侧路径上访问顺序呢是从叶子结点到根节点,很自然我们可以用一个stack保存这个路径。同时如果当前访问结点有右孩子,我们需把以右孩子为根的子树最左路径压入栈中。时间复杂度为O(n),空间复杂度为O(h)。代码如下:

 1 class Solution {
 2 public:
 3     vector<int> inorderTraversal(TreeNode *root) {
 4         vector<int> result;
 5         if(!root) return result;
 6         
 7         stack<TreeNode*> S;
 8         for(TreeNode *p = root; p; p = p->left)
 9             S.push(p);
10         
11         while(!S.empty()){
12             TreeNode *tmp = S.top();
13             S.pop();
14             result.push_back(tmp->val);
15             for(TreeNode *p = tmp->right; p ; p = p->left)
16                 S.push(p);
17         }
18         
19         return result;
20     }
21 };

 

Leetcode: Binary Tree Inorder Traversal

标签:des   style   blog   io   ar   color   sp   for   on   

原文地址:http://www.cnblogs.com/Kai-Xing/p/4143756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!