java- 두 갈래 나무의 거울 뒤집기

1066 단어
사고방식: 1: 귀속, 만약에 노드가 비어 있으면 귀환, 그렇지 않으면 좌우 아이의 지침을 교환한다.거울 노드의 왼쪽 트리, 오른쪽 트리로 돌아가기;2: 비귀속: 각 비잎 노드의 왼쪽 나무 지침과 오른쪽 나무 지침을 교환하고 대열을 이용하여 뿌리 노드가 먼저 대열에 들어간다.대열의 첫 번째 노드의 좌우 아이의 바늘을 교환하고 첫 번째 노드의 좌우 아이를 입대하고 팝();대기열이 비어 있을 때까지;두루 훑어보기 완료;반복 실행:public void mirror () {mirror (this.root);
/**
 *  BST 
 *
 * @param root
 */
private void mirror(BSTNode root) {
    if (root == null) {
        return;
    }

    BSTNode tmp = root.getLeft();
    root.setLeft(root.getRight());
    root.setRight(tmp);

    mirror(root.getLeft());
    mirror(root.getRight());
}

비귀속 실현:function TreeNode(x) {this.val = x;this.left = null;this.right = null;}function Mirror(root) {if(root====null) return, var queue=[];//트리queue.push(root)를 반복하는 데 도움이 되는 대기열
while(queue.length !== 0) {
    var cur = queue.shift();//  , 
    if(cur !== null) {
        var temp = cur.left;
        cur.left = cur.right;
        cur.right = temp;
    
        queue.push(cur.left)//  
        queue.push(cur.right);//  
    }  
}    

}

좋은 웹페이지 즐겨찾기