LCP 67. 装饰树

收获:
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;
    }
     
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值