페이지

2012년 5월 15일 화요일

How to check if a tree is balanced

root 노드의 왼쪽 Subtree와 오른쪽 Subtree의 높이의 차이가 1이하인 경우 Tree가 균형잡혀있다고 할 수 있으므로, 각 Subtree의 최대 깊이와 최소 깊이를 구하여 그 차이를 구한다.


/*
 * pseudo code: need more elaboration to run
*/
    public static int maxDepth( Node root ) {
        if( root==null )
            return 1;
        return (1 + Math.max( maxDepth(root.getLeft()), maxDepth(root.getRight()) );
    }

    public static int minDepth( Node root ) {
        if( root==null )
            return 1;
        return (1 + Math.min( minDepth(root.getLeft()), minDepth(root.getRight()) );
    }


    public static boolean isBalanced( Node root ) {
        int nMax = maxDepth( roor );
        int nMin = minDepth( roor );
        if( (nMax-nMin)>1 )
            System.out.println( "Not balanced" );
        else
             System.out.println( "Balanced" );
    }


댓글 없음: