packagecom.xk.test.struct.newp;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util.Queue;importjava.util.Stack;public classMyBinaryTree {/*** 插入节点
*@paramroot
*@paramnode
*@return
*/TreeNode insertNode(TreeNode root,TreeNode node){if(root ==node){returnnode;
}
TreeNode tmp= newTreeNode();
tmp=root;
TreeNode last= null;while(tmp!=null){
last=tmp;if(tmp.val>node.val){
tmp=tmp.left;
}else{
tmp=tmp.right;
}
}if(last!=null){if(last.val>node.val){
last.left=node;
}else{
last.right=node;
}
}returnroot;
}/*** 递归解法前序遍历
*@paramroot
*@return
*/ArrayListpreOrderReverse(TreeNode root){
ArrayList result = new ArrayList();
preOrder2(root,result);returnresult;
}void preOrder2(TreeNode root,ArrayListresult){if(root == null){return;
}
result.add(root.val);
preOrder2(root.left,result);
preOrder2(root.right,result);
}/*** 迭代解法前序遍历
*@paramroot
*@return
*/ArrayListpreOrder(TreeNode root){
Stack stack = new Stack();
ArrayList list = new ArrayList();if(root == null){returnlist;
}
stack.push(root);while(!stack.empty()){
TreeNode node=stack.pop();
list.add(node.val);if(node.right!=null){
stack.push(node.right);
}if(node.left != null){
stack.push(node.left);
}
}returnlist;
}/*** 中序遍历
*@paramroot
*@return
*/ArrayListinOrder(TreeNode root){
ArrayList list = new ArrayList();
Stack stack = new Stack();
TreeN