day11.12

哎今天做的事又少了,昨天没睡好搞得好困。

leetcode就写了8个题,把留的最小生成树的算法作业完成了,计网作业还没写=  =,明天必须必须写了!

Lowest Common Ancestor of a Binary Search Tree

Maximum Depth of Binary Tree

Invert Binary Tree

Path Sum   Path Sum II

Balanced Binary Tree

Same Tree

Binary Tree Paths

都是树的,基本上都是树的dfs,然后递归判断的。这也是树递归中最基本的地方。贴几个写的代码吧


找树高度

 int maxDepth(TreeNode* root) 
{
        if(!root) return 0;
        return 1+max(maxDepth(root->left),maxDepth(root->right));
}

判断树是否平衡(我用树高判断的,感觉有更好的方法明天看看)
 bool balanced=true;
    int getHeight(TreeNode*r)
    {
        if(!r) return 0;
        return 1+max(getHeight(r->left),getHeight(r->right));   
    }
    void travel(TreeNode*r)
    {
        if(!r) return;
        if(r->left) travel(r->left);
        if(r->right) travel(r->right);
        balanced=balanced&&(abs(getHeight(r->left)-getHeight(r->right))<=1);
    }
    bool isBalanced(TreeNode* root) {
        if(!root) return true;
        travel(root);
        return balanced;
    }


判断两树是否相等

 bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p==NULL&&q==NULL) return true;
        if(p&&!q||!p&&q||p->val!=q->val) return false;
        return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    }


path sum 用dfs遍历

int num=0;
    bool judge=false;
    void dfs(TreeNode*r,int sum)
    {
        if(judge||!r) return ;
        num+=r->val;
        if(r->left) dfs(r->left,sum);
        if(r->right) dfs(r->right,sum);
        if(!r->left&&!r->right) judge=judge||num==sum;
        num-=r->val;
    }
    bool hasPathSum(TreeNode* root, int sum) {
            dfs(root,sum);
            return judge;
    }


明天leetcode+计网  ( +编译原理),要图书馆泡一天了

好困赶紧睡了zzzzzz



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值