栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

判断一个节点是否在一颗子树中

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

判断一个节点是否在一颗子树中

题目如下:

判断一个节点是否在一颗子树中

思路:

(使用java语言)递归实现——>
(1)首先根节点入栈;判断node和目标节点值goal是否相等;
(2)node和goal不相等,递归node的左子节点;判断其和goal是否相等;
(3)如果不相等,递归node的右子节点;判断其和goal是否相等;
(4)如果还是不相等则继续执行(2)、(3)步骤,直到找到和goal相等的节点
(5)如果所有节点都遍历完之后还是没找到,则返回false

思路图示:

代码如下:
public class BinaryTree {
	//判断一个节点是否在一颗子树中
	public boolean exist(TreeNode node,int goal) {
	//第一次的时候传入根节点和目标节点
	
		if(node==null) {//根节点为空,树不存在
			return false;
		}
		if(goal==node.getValue()) {
		//目标节点和当前节点的值相同,则表明节点在树中
			return true;
		}
		return exist(node.getLeft(),goal) || exist(node.getRight(),goal);
		//把递归调用写在return后面,可以直接返回递归结果
		//分别递归当前节点的左子节点和右子节点,判断节点值和目标值是否相同
	}
}

测试类:

public class Test {//测试类
	public static void main(String[] args) {
		
		BinaryTree tree=new BinaryTree();
		TreeNode node=new TreeNode(5);
		TreeNode node1=new TreeNode(3);
		TreeNode node2=new TreeNode(7);
		TreeNode node3=new TreeNode(2);
		TreeNode node4=new TreeNode(4);
		TreeNode node5=new TreeNode(6);
		TreeNode node6=new TreeNode(8);
		node.setLeft(node1);
		node.setRight(node2);
		node1.setLeft(node3);
		node1.setRight(node4);
		node2.setLeft(node5);
		node2.setRight(node6);
		//测试:判断一个节点是否在一颗子树中
		System.out.println(tree.exist(node, 4));
		
	}
}

节点类:

public class TreeNode {//节点类
	private TreeNode leftTreeNode;//左子树
	private TreeNode rightTreeNode;//右子树
	private int value;//值
	public TreeNode(int value) {
		this.value=value;
	}
	@Override
    public String toString() {
        return "TreeNode{" +
                "leftTreeNode=" + leftTreeNode +
                ", rightTreeNode=" + rightTreeNode +
                ", value=" + value +
                '}';
    }
	public TreeNode getLeft() {
		return leftTreeNode;
	}
	public void setLeft(TreeNode leftTreeNode) {
		this.leftTreeNode=leftTreeNode;
	}
	public TreeNode getRight() {
		return rightTreeNode;
	}
	public void setRight(TreeNode rightTreeNode) {
		this.rightTreeNode=rightTreeNode;
	}
	public int getValue() {
		return value;
	}
	public void setValue(int value) {
		this.value=value;
	}
	

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024141.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号