一、中序遍历
中序遍历的递归过程为:若二叉树为空,则遍历结束。否则:
1、中序遍历根节点的左子树;
2、访问根节点;
3、中序遍历根节点的右子树。
递归算法
void InOrder(BiTree bt)
{if (bt == null) return;
InOrder(bt->lchild);
Visit(bt);
InOrder(bt->rchild);
}
先序遍历:根 左 右
后续遍历:左 右 根
二、二叉搜索树(二叉排序树)
特点:
三、代码(转载)
import java.util.ArrayList;
public class Solution {
ArrayList<TreeNode> list = new ArrayList<>();
TreeNode KthNode(TreeNode pRoot, int k)
{
mid(pRoot);
if(k<1||list.size()<k){
return null;
}else{
return list.get(k-1);
}
}
//递归遍历二叉搜索树
public void mid(TreeNode pRoot){
if(pRoot!=null){
mid(pRoot.left);
list.add(pRoot);
mid(pRoot.right);
}
}
}
本来想不用数组进行存储通过计数控制遍历次数直接返回所查找的节点,减少内存开支,但是在递归的过程中就一直存在计数变量一直被初始化的过程。