int** levelOrder(struct TreeNode* root, int** columnSizes, int* returnSize) //从函数的接口分析,root为传入参数,为树的根节点。int** columnSizes, int* returnSize是传出参数,retrunSize是树的深度,columnSizes是数组,是每行的节点的个数。
因为C不能传出多个参数,因此需要保留改变值就必须参数实参,即传入地址来达到修改的目的。也可以把他们看为一个数组,相当于取出数组中的第一个元素。
首先需要得到数的深度,这个用递归很容易得到
int max_depth(struct TreeNode* root) {
if (root == NULL) return 0;
int ld = max_depth(root->left);