Java-二叉树的前序、中序和后序查询

it2023-09-25  67

前序查找的思路分析

1.先判断当前节点是不是自己要找的 2.如果是,则返回当前节点 3.如果不是,则判断当前节点的左子节点是否为空,如果不为空,则递归前序查找 4.如果左递归前序查找,找到节点则返回,若未找到,则继续判断当前节点的右子节点是否为空,如果不为空,则继续递归前序查找

前序查找代码实现

//前序遍历查找 //如果找到返回Node,没找到返回null public Node preOrderSearch(int no) { //比较当前节点是不是 if(this.no==no) { return this; } //判断当前节点的左子节点是否为空,如果不为空,则进行前序查找 //如果左递归前序查找,找到则返回 Node resNode=null; if(this.left!=null) { resNode=this.left.preOrderSearch(no); } if(resNode!=null) {//说明找到 return resNode; } if(this.right!=null) { resNode=this.right.preOrderSearch(no); } return resNode; } //前序遍历查找 public Node preOrderSearch(int no) { if(root!=null) { return root.preOrderSearch(no); }else { return null; } }

中序查找思路分析

1.判断当前节点的左子节点是否为空,如果不为空,则递归中序查找 2.如果找到则返回,如果没有找到,就和当前节点进行比较,如果是则返回当前节点,否则继续进行右递归的中序查找 3.如果右递归中序查找,找到就返回,否则就返回null

中序查找代码实现

//中序遍历查找 public Node infixOrderSearch(int no) { //判断当前节点的左子节点是否为空,如果不为空,则递归中序查找 Node resNode=null; if(this.left!=null) { resNode=this.left.infixOrderSearch(no); } if(resNode!=null) {//说明找到 return resNode; } //如果找到,则返回,如果没有找到,就和当前节点比较,如果是则返回当前节点 if(this.no==no) { return this; } //否则进行右递归的中序查找 if(this.right!=null) { resNode=this.right.infixOrderSearch(no); } return resNode; } //编写中序遍历的方法 public void infixOrder() { //递归左子树中序遍历 if(this.left!=null) { this.left.infixOrder(); } //输出父节点 System.out.println(this); //递归右子树中序遍历 if(this.right!=null) { this.right.infixOrder(); } }

后序查找思路分析

1.判断当前节点的左子节点是否为空,如果不为空,则递归中序查找 2.如果找到就返回,如果没有找到,就判断当前节点的右子节点是否为空,rr颗不为空,则右递归进行后序查找,如果找到,就返回 3.和当前节点进行比较,如果是则返回,如果不是就返回null

后序查找代码实现

//后序遍历查找 public Node postOrderSearch(int no) { //判断当前节点是否为空,如果不为空,则递归后续查找 Node resNode=null; if(this.left!=null) { resNode=this.left.postOrderSearch(no); } if(resNode!=null) { return resNode; } //如果左子树没有找到,则向右子树进行递归后序查找 if(this.right!=null) { resNode=this.right.postOrderSearch(no); } if(resNode!=null) { return resNode; } if(this.no==no) { return this; } return resNode; } //编写后序遍历的方法 public void postOrder() { if(this.left!=null) { this.left.postOrder(); } if(this.right!=null) { this.right.postOrder(); } System.out.println(this); }
最新回复(0)