收获:
1.调用有返回值的函数,可以不接收返回值,只调用
(重点)
2.malloc一个二叉树节点的公式
struct TreeNode* nleft=(struct TreeNode*)malloc(sizeof(struct TreeNode));
题目
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* expandBinaryTree(struct TreeNode* root){
//层次遍历二叉树,如果该节点有左儿子,就malloc一个节点,让该节点指向左孩子,原父节点指向新节点
//层次遍历还是使用递归的先后中序遍历?是不是应该递归好写点?因为我都不会写哈哈
//我感觉是不是应该用后序遍历,先处理俩孩子,然后处理自己?还是先序
//不对啊,是不是如果用层次的话,新加入的-1会不会再加一遍-1,不是我看了提示,val>0
//我想用递归试试,问题是我怎么才能保证root不变哦
if(root==NULL){
return root;
}
else if(root->left==NULL&&root->right==NULL){
return root;
}
else{
//expandBinaryTree(root->left);//题解的位置
//expandBinaryTree(root->right);
if(root->left!=NULL){
struct TreeNode* nleft=(struct TreeNode*)malloc(sizeof(struct TreeNode));//这个格式对吗?
nleft->val=-1;
nleft->left=root->left;
nleft->right=NULL;
struct TreeNode* p=root->left;
root->left=nleft;
expandBinaryTree(p);//原来的位置
}
if(root->right!=NULL){
struct TreeNode* nright=(struct TreeNode*)malloc(sizeof(struct TreeNode));
nright->val=-1;
nright->right=root->right;
nright->left=NULL;
struct TreeNode* p=root->right;
root->right=nright;
expandBinaryTree(p);//原来的位置
}
return root;
}
}