查找二叉树中最深结点
[!Tip]
本节源代码见Github链接🔗
问题描述
查找二叉树中最深结点
核心思路
使用层次遍历,辅助队列中最后一个出队的元素即最深结点
实现代码
【👉🏻>>点击展开查看代码】
/**
* 查找二叉树中最深结点
*
* @className: DeepestNodeinBinaryTree
* @author: Max Solider
* @date: 2023-06-11 19:07
*/public class DeepestNodeInBinaryTree {
public static BinaryTreeNode deepestNodeInBinaryTree(BinaryTreeNode root) {
if (root == null) {
return null;
}
ArrayQueue queue = new ArrayQueue(10);
queue.enQueue(root);
BinaryTreeNode result = root;
while (!queue.isEmpty()) {
result = (BinaryTreeNode)queue.deQueue();
if (result.getLeft() != null) {
queue.enQueue(result.getLeft());
}
if (result.getRight() != null) {
queue.enQueue(result.getRight());
}
}
return result;
}
}
时间复杂度
时间复杂度为O(n)。
空间复杂度
空间复杂度为O(n)。