Leetcode 114. Flatten Binary Tree to Linked List 두 갈래 트리를 체인 테이블로 확장합니다.

6210 단어 Leetcode(101~200)

제목:


두 갈래 나무를 정해 제자리에서 체인 시계로 펼치세요.
예를 들어, 지정된 두 갈래 트리
    1
   / \
  2   5
 / \   \
3   4   6

다음으로 확장:
1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6

문제 해결 방법:


데이터 접근 순서는 앞의 순서를 두루 훑어보고 귀속할 수도 있고 교체할 수도 있으며 오른쪽 노드를 체인 테이블의next로 사용합니다.
시간 복잡도 O(n), 공간 복잡도 O(logn).

코드 구현:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public void flatten(TreeNode root) {
        if (root == null) return;
        Stack<TreeNode> stack = new Stack<TreeNode>();
        TreeNode p = root;
        while (p != null) {
            if (p.right != null) stack.push(p.right);
            p.right = p.left;
            p.left = null;

            if (p.right == null && !stack.isEmpty()) {
                p.right = stack.pop();
             }

            p = p.right;
        }
    }
}

좋은 웹페이지 즐겨찾기