검지offer 제2판 - 55.두 갈래 나무의 깊이

1852 단어
본 시리즈 내비게이션: 검지offer(제2판)java 내비게이션 게시판 구현
면접 문제 55: 두 갈래 나무의 깊이
제목 요구: 두 갈래 나무의 깊이를 구한다.단지 하나의 뿌리 노드를 포함하는 두 갈래 나무의 깊이는 1이다.
문제 풀이 사고방식: 두 갈래 나무 루트의 깊이가 하위 나무 루트보다 높다.왼쪽과 루트.right의 깊이는 최대 1입니다.따라서 상술한 결론을 통해 점차 해답을 구할 수 있다.반복을 사용하지 않으면 층차 반복 (폭 우선 반복) 을 통해 해결할 수 있습니다.
package chapter6;
import structure.TreeNode;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

/**
 * Created with IntelliJ IDEA
 * Author: ryder
 * Date  : 2017/8/15
 * Time  : 22:25
 * Description: 
 **/
public class P271_TreeDepth {
    // 
    public static int treeDepth(TreeNode root){
        if(root==null)
            return 0;
        int left = treeDepth(root.left);
        int right = treeDepth(root.right);
        return left>right?(left+1):(right+1);
    }
    // , / 
    public static int treeDepth2(TreeNode root){
        if(root==null)
            return 0;
        Queue> queue = new LinkedList<>();
        queue.offer(root);
        int depth = 0;
        while (!queue.isEmpty()){
            int size = queue.size();
            TreeNode cur = null;
            for(int i=0;i root = new TreeNode<>(1);
        root.left = new TreeNode<>(2);
        root.left.left = new TreeNode<>(4);
        root.left.right = new TreeNode<>(5);
        root.left.right.left = new TreeNode<>(7);
        root.right = new TreeNode<>(3);
        root.right.right = new TreeNode<>(6);
        System.out.println(treeDepth(root));
        System.out.println(treeDepth2(root));
    }
}

실행 결과
4

좋은 웹페이지 즐겨찾기