我已经编写了一个代码,用于在具有最大元素总和的二叉树中查找级别。我有几个问题。
- 这是一个好的设计吗?- 我使用了 2 个队列,但两个队列存储的元素总数将小于 n。所以我认为应该没问题。
有没有更好的设计?
public class MaxSumLevel { public static int findLevel(BinaryTreeNode root) { Queue mainQ = new Queue(); Queue tempQ = new Queue(); int maxlevel = 0; int maxVal = 0; int tempSum = 0; int tempLevel = 0; if (root != null) { mainQ.enqueue(root); maxlevel = 1; tempLevel = 1; maxVal = root.getData(); } while ( !mainQ.isEmpty()) { BinaryTreeNode head = (BinaryTreeNode) mainQ.dequeue(); BinaryTreeNode left = head.getLeft(); BinaryTreeNode right = head.getRight(); if (left != null) { tempQ.enqueue(left); tempSum = tempSum + left.getData(); } if (right != null) { tempQ.enqueue(right); tempSum = tempSum + right.getData(); } if (mainQ.isEmpty()) { mainQ = tempQ; tempQ = new Queue(); tempLevel ++; if (tempSum > maxVal) { maxVal = tempSum; maxlevel = tempLevel; tempSum = 0; } } } return maxlevel; }
}