leetcode543. 二叉树的直径-必会的

问题描述:

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。

示例 :
给定二叉树

          1
         / \
        2   3
       / \     
      4   5    
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

注意:两结点之间的路径

长度是以它们之间边的数目表示。

上代码,拿去即可运行:

package com.onlyqi.upup01.leetcode;


public class TreeNode {
    private TreeNode LefTreeNode;
    private TreeNode RightNode;
    private Integer value;

    public TreeNode() {
    }

    public TreeNode(TreeNode lefTreeNode, TreeNode rightNode, Integer value) {
        LefTreeNode = lefTreeNode;
        RightNode = rightNode;
        this.value = value;
    }
    public TreeNode( Integer value) {
        this.value = value;
    }

    public TreeNode getLefTreeNode() {
        return LefTreeNode;
    }

    public void setLefTreeNode(TreeNode lefTreeNode) {
        LefTreeNode = lefTreeNode;
    }

    public TreeNode getRightNode() {
        return RightNode;
    }

    public void setRightNode(TreeNode rightNode) {
        RightNode = rightNode;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }
}
package com.onlyqi.upup01.leetcode;

import java.util.Collections;

public class Test02 {
    public static void main(String[] args) {
        TreeNode treeNode=new TreeNode(2);
        TreeNode treeNode2=new TreeNode(5);
        TreeNode treeNode3=new TreeNode(13);
        TreeNode treeNode4=new TreeNode(13);
        TreeNode treeNode5=new TreeNode(13);
        treeNode2.setLefTreeNode(treeNode4);
        treeNode2.setRightNode(treeNode5);
        treeNode.setLefTreeNode(treeNode2);
        treeNode.setRightNode(treeNode3);
        int a=maxDepth(treeNode.getRightNode());
        int b=maxDepth(treeNode.getLefTreeNode());
        System.out.println(a+b);
    }
    public static int maxDepth(TreeNode root) {
        if (root == null) {//空了
            return 0;
        }else {//遍历孩子

            int left=maxDepth(root.getLefTreeNode());
            int right=maxDepth(root.getRightNode());
            return (left>right)?(left+1):(right+1);
        }

    }
}

我要刷100道算法题,第80道 

Guess you like

Origin blog.csdn.net/guoqi_666/article/details/120475238