leetcode 重建二叉树
来源:互联网 发布:erp软件好学吗 编辑:程序博客网 时间:2024/06/05 20:26
1、Construct Binary Tree from Preorder and Inorder Traversal
链接:https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/
思路:根据先序遍历和中序遍历,重建树。递归思想,因为树节点不重复,先序的第一个为根,在中序的数组中找到,中序左边为左子树,右边为右子树。
public TreeNode buildTree(int[] preorder, int[] inorder) { int size = preorder.length; if(size == 0) return null; return help(preorder, inorder, 0, size - 1, 0, size - 1); } public TreeNode help(int[] preorder, int[] inorder, int pleft, int pright, int ileft, int iright) { if(pleft > pright || ileft > iright) return null; TreeNode root = new TreeNode(preorder[pleft]); int i; for(i = ileft; i <= iright; i++){ if(inorder[i] == preorder[pleft]) break; } root.left = help(preorder, inorder,pleft + 1, pleft + i - ileft, ileft, i - 1); root.right = help(preorder, inorder,pleft + i - ileft + 1, pright, i + 1, iright); return root; }
2、Construct Binary Tree from Inorder and Postorder Traversal
链接:https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
思路:同上
public TreeNode buildTree(int[] inorder, int[] postorder) { int size = inorder.length; if(size == 0) return null; return help(inorder, postorder, 0, size - 1, 0, size - 1); } public TreeNode help(int[] inorder, int[] postorder, int ileft, int iright, int pleft, int pright) { if(pleft > pright || ileft > iright) return null; TreeNode root = new TreeNode(postorder[pright]); int i; for(i = ileft; i <= iright; i++){ if(inorder[i] == postorder[pright]) break; } root.left = help(inorder, postorder,ileft, i - 1, pleft, pleft + i - ileft - 1); root.right = help(inorder, postorder,i + 1, iright, pleft + i - ileft, pright - 1); return root; }
1 0
- 重建二叉树 leetcode
- leetcode 重建二叉树
- LeetCode-105、106 Construct Binary Tree (JAVA)重建二叉树
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 微信小程序 获取设备信息 API
- 微信小程序 navigation API
- 程序死锁与预防
- 测试1
- 357. Count Numbers with Unique Digits 类别:动态规划 难度:medium
- leetcode 重建二叉树
- Struts2-配置文件详解
- 源码-Oracle数据库管理-第十七章-动态SQL语句-Part 2(使用EXECUTE IMMEDIATE)
- 4.Nodejs入门-----MongoDB
- 测试2
- [Azure]使用Powershell输出Azure订阅下所有虚拟机的ACL信息
- SVN和Maven的区别
- 织梦系统(DEDECMS)后台模板修改2
- 微信小程序 animation API