各种层次遍历衍生
This commit is contained in:
parent
99db282c5d
commit
3247b3f654
@ -51,14 +51,11 @@ public class LeetCode116 {
|
|||||||
node.left.right = new Node(5);
|
node.left.right = new Node(5);
|
||||||
node.right.left = new Node(6);
|
node.right.left = new Node(6);
|
||||||
node.right.right = new Node(7);
|
node.right.right = new Node(7);
|
||||||
System.out.println(new Solution().connect(node));
|
System.out.println(new Solution1().connect(node));
|
||||||
}
|
}
|
||||||
|
|
||||||
class Solution {
|
class Solution {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public Node connect(Node root) {
|
public Node connect(Node root) {
|
||||||
if (root == null) {
|
if (root == null) {
|
||||||
return null;
|
return null;
|
||||||
@ -89,4 +86,30 @@ public class LeetCode116 {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Solution1 {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归方法
|
||||||
|
* @param root
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Node connect(Node root) {
|
||||||
|
if (root == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
circle(root);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
void circle(Node root) {
|
||||||
|
if (root == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (root.left!=null) root.left.next = root.right == null ? null : root.right;
|
||||||
|
if (root.right!=null) root.right.next = root.next == null ? null : root.next.left;
|
||||||
|
circle(root.left);
|
||||||
|
circle(root.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
148
src/main/java/cn/whaifree/leetCode/Tree/LeetCode226.java
Normal file
148
src/main/java/cn/whaifree/leetCode/Tree/LeetCode226.java
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
package cn.whaifree.leetCode.Tree;
|
||||||
|
|
||||||
|
import cn.whaifree.leetCode.model.TreeNode;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Deque;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @version 1.0
|
||||||
|
* @Author whai文海
|
||||||
|
* @Date 2024/1/19 14:54
|
||||||
|
* @注释
|
||||||
|
*/
|
||||||
|
public class LeetCode226 {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
TreeNode treeNode = TreeNode.constructTree(new Integer[]{1, 2, 3, 4, 5});
|
||||||
|
treeNode.printTree();
|
||||||
|
TreeNode treeNode1 = new Solution2().invertTree(treeNode);
|
||||||
|
treeNode1.printTree();
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public TreeNode invertTree(TreeNode root) {
|
||||||
|
reverse(root);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reverse(TreeNode root) {
|
||||||
|
if (root == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
swap(root);
|
||||||
|
invertTree(root.left);
|
||||||
|
invertTree(root.right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void swap(TreeNode root) {
|
||||||
|
TreeNode tmp = root.left;
|
||||||
|
root.left = root.right;
|
||||||
|
root.right = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution1 {
|
||||||
|
/**
|
||||||
|
* 层次遍历
|
||||||
|
* @param root
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TreeNode invertTree(TreeNode root) {
|
||||||
|
if (root == null) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
Deque<TreeNode> queue = new LinkedList<>();
|
||||||
|
queue.add(root);
|
||||||
|
while (!queue.isEmpty()) {
|
||||||
|
TreeNode pop = queue.pop();
|
||||||
|
swap(pop);
|
||||||
|
if (pop.right != null) {
|
||||||
|
queue.add(pop.right);
|
||||||
|
}
|
||||||
|
if (pop.left != null) {
|
||||||
|
queue.add(pop.left);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void swap(TreeNode root) {
|
||||||
|
TreeNode tmp = root.left;
|
||||||
|
root.left = root.right;
|
||||||
|
root.right = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution2 {
|
||||||
|
/**
|
||||||
|
* 先序遍历
|
||||||
|
* @param root
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TreeNode invertTree(TreeNode root) {
|
||||||
|
if (root == null) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
Deque<TreeNode> stack = new LinkedList<>();
|
||||||
|
stack.push(root);
|
||||||
|
while (!stack.isEmpty()) {
|
||||||
|
TreeNode pop = stack.pop();
|
||||||
|
swap(pop);
|
||||||
|
if (pop.right != null) {
|
||||||
|
stack.push(pop.right);
|
||||||
|
}
|
||||||
|
if (pop.left != null) {
|
||||||
|
stack.push(pop.left);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void swap(TreeNode root) {
|
||||||
|
TreeNode tmp = root.left;
|
||||||
|
root.left = root.right;
|
||||||
|
root.right = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Solution3 {
|
||||||
|
/**
|
||||||
|
* 先序遍历
|
||||||
|
* @param root
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public TreeNode invertTree(TreeNode root) {
|
||||||
|
if (root == null) {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
Deque<TreeNode> stack = new LinkedList<>();
|
||||||
|
stack.push(root);
|
||||||
|
while (!stack.isEmpty()) {
|
||||||
|
TreeNode pop = stack.pop();
|
||||||
|
swap(pop);
|
||||||
|
if (pop.right != null) {
|
||||||
|
stack.push(pop.right);
|
||||||
|
}
|
||||||
|
if (pop.left != null) {
|
||||||
|
stack.push(pop.left);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void swap(TreeNode root) {
|
||||||
|
TreeNode tmp = root.left;
|
||||||
|
root.left = root.right;
|
||||||
|
root.right = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user