
递归
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { //递归有返回值 if(root == null ) { TreeNode node = new TreeNode(val); return node; } if(root.val > val ) { root.left = insertIntoBST(root.left,val); } if(root.val < val ) { root.right = insertIntoBST(root.right,val); } return root; }}
递归无返回值
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { TreeNode parent; public TreeNode insertIntoBST(TreeNode root, int val) { parent = new TreeNode(0); if(root == null ) { root = new TreeNode(val); } traversal(root, val ); return root; } public void traversal(TreeNode root, int val ) { if(root == null ) { TreeNode node = new TreeNode(val); if(val > parent.val ) parent.right = node; else parent.left = node; return; } parent = root; if(root.val > val ) traversal(root.left,val); if(root.val < val ) traversal(root.right,val); return ; }}
迭代
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { //迭代 if(root == null ) { TreeNode node = new TreeNode(val); return node; } TreeNode cur = root; TreeNode parent = root; while( cur != null ) { parent = cur; if(cur.val > val) { cur = cur.left; } else { cur = cur.right; } } TreeNode node = new TreeNode(val); if(parent.val > val ) { parent.left = node; } else { parent.right = node; } return root; }}