小红拿到了一棵二叉树,定义每个节点的价值为子树节点乘积的末尾0的数量。现在请你返回一棵二叉树,树的结构和给定的二叉树相同,将每个节点的权值替换为该节点的价值。 二叉树节点数不超过。 二叉树每个节点的权值都是不超过的正整数。
区块链毕设网qklbishe.com为您提供问题的解答
小红拿到了一棵二叉树,定义每个节点的价值为子树节点乘积的末尾0的数量。现在请你返回一棵二叉树,树的结构和给定的二叉树相同,将每个节点的权值替换为该节点的价值。
二叉树节点数不超过。
二叉树每个节点的权值都是不超过的正整数。
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { public class TreeNodeF { int[] val = new int[2]; TreeNodeF left = null; TreeNodeF right = null; public TreeNodeF(int[] val) { this.val = val; } } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return TreeNode类 */ public void rootval(TreeNodeF root) { if (root == null) { return; } rootval(root.left); rootval(root.right); int[] arr = root.val; if (root.left != null) { arr[0] += root.left.val[0]; arr[1] += root.left.val[1]; } if (root.right != null) { arr[0] += root.right.val[0]; arr[1] += root.right.val[1]; } // System.out.println(Arrays.toString(arr)); root.val = arr; } public TreeNode convert(TreeNodeF root) { if (root != null) { TreeNode t = new TreeNode(Math.min(root.val[0], root.val[1])); t.left = convert(root.left); t.right = convert(root.right); return t; } return null; } public TreeNodeF ftree(TreeNode root) { if (root != null) { int two = 0; int five = 0; while(root.val % 2 == 0){ two++; root.val /= 2; } while(root.val % 5 == 0){ five++; root.val /= 5; } TreeNodeF ft = new TreeNodeF(new int[] {two,five}); ft.left = ftree(root.left); ft.right = ftree(root.right); return ft; } return null; } public TreeNode valueOfTree (TreeNode root) { // write code here TreeNodeF ft = ftree(root); rootval(ft); // preorder(root); return convert(ft); } }
28:10
以上就是关于问题小红拿到了一棵二叉树,定义每个节点的价值为子树节点乘积的末尾0的数量。现在请你返回一棵二叉树,树的结构和给定的二叉树相同,将每个节点的权值替换为该节点的价值。
二叉树节点数不超过。
二叉树每个节点的权值都是不超过的正整数。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训