关闭

94. Binary Tree Inorder Traversal

47人阅读 评论(0) 收藏 举报
分类:

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

For example:
Given binary tree [1,null,2,3],

   1
    \
     2
    /
   3

return [1,3,2].

思路:先找到最左边的叶子节点。

/**
 * 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> result;
	if(root == NULL) return result;
	
	stack<TreeNode*> nodeList;
	while(root!=NULL)
	{
		nodeList.push(root);
		root = root->left;
	}

	while(!nodeList.empty())
	{
		TreeNode* tmp = nodeList.top();
		nodeList.pop();
		result.push_back(tmp->val);

		if(tmp->right!=NULL)
		{
			nodeList.push(tmp->right);
			root = tmp->right->left;

			while(root!=NULL)
			{
				nodeList.push(root);
				root = root->left;
			}
		}
	}

	return result;
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:68253次
    • 积分:0
    • 等级:
    • 排名:千里之外
    • 原创:226篇
    • 转载:8篇
    • 译文:0篇
    • 评论:5条
    最新评论