给出一棵二叉树,返回其节点值的前序遍历。
给出一棵二叉树 {1,#,2,3}
,
1 \ 2 / 3
返回 [1,2,3]
.
解题思路:
创建一个向量指针p,如果根节点为空,则返回p;构造一个函数A,在函数A中,判断根节点是否为空,若根节点不为空,则先访问根节点,再访问左子树,最后访问右子树。
代码实现:
class Solution {
public:
/**
* @param root: The root of binary tree.
* @return: Preorder in vector which contains node values.
*/
vector<int> preorderTraversal(TreeNode *root) {
// write your code here
vector<int> p;
if(root==NULL) return p;
A(p,root);
}
void A(vector<int> &p,TreeNode *root)
{ if(root==NULL)
return ;
p.push_back(root->val);
A(p,root->left);
A(p,root->right);
}
};
感想:
前序遍历利用递归的思想,先创建一个指针向量,按照前序遍历的顺序,先访问根节点,再访问左子树,最后考虑后子树。