4.35 leetcode -35 binary-tree-inorder-traversal

来源:互联网 发布:win7动态桌面壁纸软件 编辑:程序博客网 时间:2024/06/02 00:49
题目描述

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?
confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.

OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1
/ \
2 3
/
4
\
5

The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".


所以,需要非递归方法的前序遍历是么。

还好写的出来

/** * Definition for binary tree * 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) {        stack<TreeNode*> node;        vector<int> nreturn;        TreeNode *p = root;        while(p!= NULL || !node.empty())            {            if(p!=NULL)                {                node.push(p);                p = p->left;            }            else                {                p = node.top();                node.pop();                nreturn.push_back(p->val);                p = p->right;            }        }        return nreturn;    }};


原创粉丝点击