您的位置:首页 > 其它

[LeetCode] Binary Tree Inorder Traversal Solution

2016-01-12 11:09 453 查看
Given a binary tree, return the inorder[/i] traversal of its nodes’ values.
For example:
Given binary tree
{1,#,2,3}
,
1

2
/
3


return
[1,3,2]
.
Note:[/b] Recursive solution is trivial, could you do it iteratively?
confused what
"{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
» Solve this problem

[Thoughts]
For recursion version, it’s very easy to write.

But for iterative version, we need a stack to help.

Recursion version
[code]1:    vector<int> inorderTraversal(TreeNode *root) {
2:      // Start typing your C/C++ solution below
3:      // DO NOT write int main() function
4:      vector<int> result;
5:      inorderTra(root, result);
6:      return result;
7:    }
8:    void inorderTra(TreeNode* node, vector<int> &result)
9:    {
10:      if(node == NULL)
11:      {
12:        return;
13:      }
14:      inorderTra(node->left, result);
15:      result.push_back(node->val);
16:      inorderTra(node->right, result);
17:    }

Iteration version
1:    vector<int> inorderTraversal(TreeNode *root) {
2:      // Start typing your C/C++ solution below
3:      // DO NOT write int main() function
4:      vector<TreeNode*> sta;
5:      vector<int> result;
6:      if(root == NULL) return result;
7:      TreeNode* node =root;
8:      while(sta.size()>0 || node!=NULL)
9:      {
10:        while(node!=NULL)
11:        {
12:          sta.push_back(node);
13:          node = node->left;
14:        }
15:        node= sta.back();
16:        sta.pop_back();
17:        result.push_back(node->val);
18:        node =node->right;
19:      }
20:      return result;
21:    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: