package com.example.test;
import com.example.test.offer04.TreeNode;
public class offer07 {
public boolean HasSubtree(TreeNode root1, TreeNode root2) {
if (root1 == null || root2 == null)
return false;
if (root1.val == root2.val && isContain(root1, root2)) {
return true;
}
return HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
}
public boolean isContain(TreeNode node1, TreeNode node2) {
if (node1 == null || node2 != null)
return false;
if (node2 == null) {
return true;
}
return node1.val == node2.val && isContain(node1.left, node2.left) || isContain(node1.right, node2.right);
}
}
18.
19.
package com.example.test;
import java.util.Stack;
public class offer08 {
private Stack<Integer> stack = new Stack<Integer>();
private Stack<Integer> minStack = new Stack<Integer>();
public void push(int node) {
if (stack.isEmpty()) {
stack.push(node);
minStack.push(node);
return;
}
int topVal = minStack.peek();
if (node > topVal) {
minStack.push(topVal);
} else
minStack.push(node);
stack.push(node);
}
public void pop() {
stack.pop();
minStack.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return minStack.peek();
}
}
20.