翻转二叉树
翻转二叉树需要借助层序遍历二叉树
然后在层序遍历到的每一个节点,将其左右两个节点进行替换
//翻转二叉树
public static void travelBT(TreeNode root)
{
if(root == null) return;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty())
{
TreeNode node = queue.poll();
System.out.print(node.val + " ");
TreeNode tempNode = node.left;
node.left = node.right;
node.right = tempNode;
if (node.left != null) {
queue.add(node.left);
}
if(node.right != null) {
queue.add(node.right);
}
}
}
二叉树的高度
递归
二叉树的高度,最简单的做法是递归
递归的思想是:
递归求出其左子树的高度,然后递归求出其右子树的高度
比较左右子树的高度,找出最大值+1,就是当前二叉树的高度
//树的高度
public static int hightBT(TreeNode root)
{
if(root == null) return 0;
return Math.max(hightBT(root.left), hightBT(root.right)) + 1;
}
非递归
//树的高度
public static int hightBT(TreeNode root)
{
if(root == null) return 0;
int height = 0;
//每层树的节点数
int levelCount = 1;
//return Math.max(hightBT(root.left), hightBT(root.right)) + 1;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
levelCount--;
if(node.left != null)
{
queue.add(node.left);
}
if(node.right != null)
{
queue.add(node.right);
}
if(levelCount == 0) {
levelCount = queue.size();
height++;
}
}
return height;
}
本文深入解析二叉树的翻转与高度计算方法,包括递归与非递归实现,为理解二叉树提供了清晰的指导。

1180

被折叠的 条评论
为什么被折叠?



