Day38 tree

  1. 反转二叉树

输入:
在这里插入图片描述
输出:

在这里插入图片描述

  1. 实现BST的层级遍历方法

因为两个题需要相互配合展示,所以代码放在一个类里,就不单独拿出来了。

package week7.day38;

import java.util.ArrayDeque;
import java.util.Queue;

/**
 * @author : 魏铭志
 * @date :  2020/4/15 20:20
 */
public class Test2 {

    public static void main(String[] args) {
        int[] arr = {4, 2, 7, 1, 3, 6, 9};
        TreeNode tree = buildTree(arr);
        System.out.println(treeString(tree));
        TreeNode newTree = flipBinaryTree(tree);
        System.out.println(treeString(newTree));
    }

    public static TreeNode buildTree(int[] arr) {
        Queue<TreeNode> queue = new ArrayDeque<>();
        TreeNode tree = new TreeNode(arr[0]);
        queue.add(tree);
        int index = 1;
        do {
            TreeNode root = queue.poll();
            root.left = new TreeNode(arr[index++]);
            root.right = new TreeNode(arr[index++]);
            queue.add(root.left);
            queue.add(root.right);
        } while (index != arr.length);
        return tree;
    }

    public static String treeString(TreeNode tree) {
        if (tree == null) {
            return "[]";
        }
        Queue<TreeNode> queue = new ArrayDeque<>();
        queue.add(tree);
        StringBuilder builder = new StringBuilder("[");
        while (!queue.isEmpty()) {
            TreeNode root = queue.poll();
            builder.append(root.val).append(", ");
            if (root.left != null) {
                queue.add(root.left);
            }
            if (root.right != null) {
                queue.add(root.right);
            }
        }
        builder.delete(builder.length() - 2, builder.length());
        builder.append("]");
        return builder.toString();
    }

    private static TreeNode flipBinaryTree(TreeNode tree) {
        if (tree == null) {
            return null;
        }
        TreeNode right = flipBinaryTree(tree.right);
        TreeNode left = flipBinaryTree(tree.left);
        tree.left = right;
        tree.right =left;
        return tree;
    }


    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
}

发布了27 篇原创文章 · 获赞 11 · 访问量 2333

猜你喜欢

转载自blog.csdn.net/qq_43587378/article/details/105546586