反转一棵二叉树

    技术2026-02-09  4

    思路:首先按层访问二叉树,反转每个结点的左、右子树即可。我们可以使用队列完成按层访问的目的

    //迭代实现 class Solution { public TreeNode invertTree(TreeNode root) { TreeNode p=root; if(root==null) return root; LinkedList<TreeNode> queue=new LinkedList<>(); queue.add(p); while(!queue.isEmpty()){ int length=queue.size(); for(int i=0;i<length;i++){ TreeNode node = queue.poll(); TreeNode temp=node.right; node.right=node.left; node.left=temp; if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } } return root; } } //递归实现 class Solution { public TreeNode invertTree(TreeNode root) { if(root==null) return root; TreeNode temp=root.left; root.left=root.right; root.right=temp; invertTree(root.left); invertTree(root.right); return root; } }
    Processed: 0.038, SQL: 9