1372. 二叉树中的最长交错路径

1372. 二叉树中的最长交错路径 - 力扣(LeetCode)

 思路:

考虑递归
引入辅助函数 dfs,该函数保存当前长度 length 和 是否为左节点的 isLeft,逻辑为:
1.如果是左节点,在向下递归时,右节点 length+1,isLeft 为 false;左节点长度初始化为1
2.如果是右节点,在向下递归时,左节点 length+1,isLeft 为 false;右节点长度初始化为1
3.遇到空节点时递归终止

递归时遇到更长的长度,更新 max

class Solution {
    int max=0;
    public int longestZigZag(TreeNode root) {
        if(root==null)return 0;

        dfs(root,0,false);
        dfs(root,0,true);
        return max;
    }

    public void dfs(TreeNode root,int length,boolean isLeft){
        if(root==null){
            return;
        }
        if(isLeft){
            dfs(root.right,length+1,false);
            dfs(root.left,1,true);
        }else{
            dfs(root.left,length+1,true);
            dfs(root.right,1,false);
        }
        if(max<length){
            max=length;
        }
    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值