二叉树定义:所有节点的度最多为2,即所有节点最多有两个子节点,且两个子节点有左右顺序。
二叉树高度和深度:根节点为第一层,总共有多少层就是高度或深度。
满二叉树:所有二叉树中节点最多的二叉树,节点数=2^n-1,n为二叉树的高度。
完全二叉树:节点表号从上到下从左到右,依次编号,编号和满二叉树一一对应,满二叉树是完全二叉树,但是完全二叉树不一定是满二叉树。
二叉树遍历:
(都是从根节点出发,从上到下,从左到右)
前序遍历:按上面顺序,先输出当前节点,再输出左节点,再输出右节点
中序遍历:按上面顺序,先输出左节点,再输出当前节点,再输出右节点
后续遍历:按上面顺序,先输出左节点,再输出右节点,再输出当前节点
层级遍历:从上到下,从左到右,依次输出每一层节点
//前序遍历
private static void preOrderNode(TreeNode node){
if(node == null){
return;
}
System.out.print(node.getValue());
preOrderNode(node.getLeftNode());
preOrderNode(node.getRightNode());
}
//中序遍历
private static void midOrderNode(TreeNode node){
if(node == null){
return;
}
midOrderNode(node.getLeftNode());
System.out.print(node.getValue());
midOrderNode(node.getRightNode());
}
//后序遍历
private static void postOrderNode(TreeNode node){
if(node == null){
return;
}
postOrderNode(node.getLeftNode());
postOrderNode(node.getRightNode());
System.out.print(node.getValue());
}