📅  最后修改于: 2023-12-03 15:39:45.453000             🧑  作者: Mango
在二叉树中,中值指的是将树中所有节点的值按从小到大排序,该值的位置在中间的那个节点的值。本文将介绍如何在二叉树中找到中值,并将其存储到数组中。
一种常规思路是使用中序遍历,将节点的值存储在一个数组中,并对其进行排序。然后,中值就是数组中位于中间位置的值。
具体实现过程如下:
以下是使用Java语言实现上述思路的代码片段:
public int[] findMedian(TreeNode root) {
List<Integer> list = new ArrayList<>();
inorderTraversal(root, list);
Collections.sort(list);
int size = list.size();
int[] result = new int[1];
if (size % 2 == 0) {
result = new int[2];
result[0] = list.get(size / 2 - 1);
result[1] = list.get(size / 2);
} else {
result[0] = list.get(size / 2);
}
return result;
}
private void inorderTraversal(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
inorderTraversal(root.left, list);
list.add(root.val);
inorderTraversal(root.right, list);
}
注:以上代码片段仅为示例代码,实际应用中还需考虑诸如空指针、越界等异常情况。如果您在实际使用中遇到了问题,请仔细检查并适当修改代码。
在二叉树中查找中值需要遍历所有节点,因此时间复杂度为O(n),n为二叉树中节点的数量。本文介绍了一种使用中序遍历的思路来查找中值,并将其存储到数组中。但是,在实际应用中,我们应该根据具体问题的要求来选择合适的解决方案。