• leetcode 105. 从前序与中序遍历序列构造二叉树


    2023.10.21

            本题需要根据前序遍历序列和中序遍历序列来构造出一颗二叉树。类似于从中序与后序遍历序列构造二叉树 。使用递归, java代码如下:

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode() {}
    8. * TreeNode(int val) { this.val = val; }
    9. * TreeNode(int val, TreeNode left, TreeNode right) {
    10. * this.val = val;
    11. * this.left = left;
    12. * this.right = right;
    13. * }
    14. * }
    15. */
    16. class Solution {
    17. public TreeNode buildTree(int[] preorder, int[] inorder) {
    18. if(inorder.length == 0) return null;
    19. int rootValue = preorder[0];
    20. TreeNode root = new TreeNode(rootValue);
    21. if(inorder.length == 1) return root;
    22. //找到中序遍历的切割点
    23. int seg = 0;
    24. for(int i=0; i
    25. if(inorder[i] == rootValue){
    26. seg = i;
    27. break;
    28. }
    29. }
    30. int[] in_left = Arrays.copyOfRange(inorder,0,seg);
    31. int[] in_right = Arrays.copyOfRange(inorder,seg+1,preorder.length);
    32. preorder = Arrays.copyOfRange(preorder,1,preorder.length);//去掉第一个元素,也就是根节点的值
    33. int[] pre_left = Arrays.copyOfRange(preorder,0,in_left.length);
    34. int[] pre_right = Arrays.copyOfRange(preorder,in_left.length,preorder.length);
    35. //递归处理左右子树
    36. root.left = buildTree(pre_left,in_left);
    37. root.right = buildTree(pre_right,in_right);
    38. return root;
    39. }
    40. }

     

     

  • 相关阅读:
    jdbc快速开始
    华为云实验 -- 对云硬盘数据盘进行备份
    【PyTorch】Torchvision
    项目笔记记录
    数组多项时最后一项不要逗号
    RocketMQ关于指标数据的总结
    lazarus-ide简介
    基于MATLAB的变换编码的设计与实现
    vue日历选择
    linux安装sqoop
  • 原文地址:https://blog.csdn.net/m0_61028090/article/details/133963318