java 二叉树的深度 非递归算法_java二叉树深度不用递归,非递归实现
时间: 2023-10-26 11:35:37 浏览: 48
可以使用栈来实现二叉树的非递归遍历,其中需要记录每个节点的深度。
具体实现步骤如下:
1. 定义一个栈,用于存储节点和节点的深度。初始时,将根节点及其深度入栈。
2. 定义一个变量 maxDepth,用于记录节点的最大深度,初始值为 0。
3. 进行循环遍历,直到栈为空。在每次循环中,弹出栈顶元素,记录节点和节点的深度。
4. 如果当前节点的深度大于 maxDepth,则更新 maxDepth。
5. 如果当前节点存在右子树,则将右子树及其深度入栈。
6. 如果当前节点存在左子树,则将左子树及其深度入栈。
7. 循环结束后,maxDepth即为二叉树的深度。
实现代码如下:
```java
public static int getDepth(TreeNode root) {
if (root == null) {
return 0;
}
int maxDepth = 0;
Stack<Pair<TreeNode, Integer>> stack = new Stack<>();
stack.push(new Pair<>(root, 1));
while (!stack.isEmpty()) {
Pair<TreeNode, Integer> pair = stack.pop();
TreeNode node = pair.getKey();
int depth = pair.getValue();
if (depth > maxDepth) {
maxDepth = depth;
}
if (node.right != null) {
stack.push(new Pair<>(node.right, depth + 1));
}
if (node.left != null) {
stack.push(new Pair<>(node.left, depth + 1));
}
}
return maxDepth;
}
```
其中,`Pair` 是一个简单的二元组类,用于存储节点和节点的深度。`TreeNode` 是二叉树节点的类,包含左右子树指针和节点值。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)