树的子结构

    xiaoxiao2021-04-12  41

    题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路: (要养成一个习惯,对任何一个树节点进行访问时,一定要提前检测该节点是否为空) 1、递归思想,如果根节点相同则递归调用SameRootNode(),如果根节点不相同,则判断tree1的左子树和tree2是否相同,再判断右子树和tree2是否相同; 2、注意null条件。

    /** * Created by Administrator on 2017/4/13. */ public class Solution23 { public static class TreeNode{ int val; TreeNode left = null; TreeNode right = null; public TreeNode(int val){ this.val = val; } } public static boolean HasSubTree(TreeNode root1,TreeNode root2){ if (root1 == null&& root2 == null){ return false; }else if (root1.val == root1.val){ return SameRootNode(root1,root2); }else if (root1.left != root2){ return HasSubTree(root1.right,root2); }else { return HasSubTree(root1.right,root2); } } public static boolean SameRootNode(TreeNode root1,TreeNode root2){ if (root1 == null && root2 !=null){return false;} if (root2 == null){return true;} if (root1.val != root2.val){return false;} return SameRootNode(root1.left,root2.left) && SameRootNode(root1.right,root2.right); } public static void main(String args[]){ TreeNode a = new TreeNode(5); TreeNode b = new TreeNode(6); System.out.println(HasSubTree(a,b)); } }
    转载请注明原文地址: https://ju.6miu.com/read-667599.html

    最新回复(0)