C语言版本:先序遍历:先根节点,在左子树,在右子树
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
static int num;//定义一个全局static的变量,注意最后输出要给returnsize返回下标才能显示;
void preorder(struct TreeNode* root,int* res){
if(root==NULL){
return;
}
res[num++]=root->val;
preorder(root->left, res);//不断递归,同时把左子树的根节点放入数组当中
preorder(root->right, res);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize ) {
// write code here
int *ret=(int *)malloc(sizeof(int)*100);
preorder(root, ret);
*returnSize=num;
return ret;
}
C++版本:vector是一个数组容器,push_back这个方法,是往容器里面添加数据,(从这就可以看出来了C++比C的快乐)
public:
vector<int> res;
void dfs(TreeNode* Node){
if(Node == nullptr) return;
res.push_back(Node->val);
dfs(Node->left);
dfs(Node->right);
}
vector<int> preorderTraversal(TreeNode* root) {
// write code here
dfs(root);
return res;
}
};