/**

  • struct TreeNode {
  • int val;
  • struct TreeNode *left;
  • struct TreeNode *right;
  • };
  • C语言声明定义全局变量请加上static,防止重复定义 / /*
  • 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  • @param root TreeNode类
  • @return int整型一维数组
  • @return int* returnSize 返回数组行数 */ int temp[1000]; int g_num = 0;

void get_data_from_left_to_right(struct TreeNode *pRoot, int level) { if (pRoot == NULL) return;

if (level == 0)
    temp[g_num++] = pRoot->val;
else {
    get_data_from_left_to_right(pRoot->left, level - 1);
    get_data_from_left_to_right(pRoot->right, level - 1);
}

}

int get_tree_length(struct TreeNode *pRoot) { int leftlength, rightlength;

if (pRoot == NULL) return 0;

leftlength = get_tree_length(pRoot->left);
rightlength = get_tree_length(pRoot->right);

if (leftlength > rightlength)
    return leftlength + 1;
else
    return rightlength + 1;

} int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) { // write code here int length; int i = 0; length = get_tree_length(root);

for (i = 0; i < length; i++)
    get_data_from_left_to_right(root, i);

(*returnSize) = g_num;

return temp;

}