判断一个节点是不是另一个的节点的子节点;

来源:互联网 发布:eg ti5 知乎 编辑:程序博客网 时间:2024/06/05 12:01
class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) {        val = x;    }}public class Test {    public static void main(String[] args) {        //测试用节点数组        TreeNode[] tree = { new TreeNode(6), new TreeNode(2), new TreeNode(8),                new TreeNode(0), new TreeNode(4), new TreeNode(7),                new TreeNode(9), new TreeNode(3), new TreeNode(5) };        tree[0].left = tree[1];        tree[0].right = tree[2];        tree[1].left = tree[3];        tree[1].right = tree[4];        tree[2].left = tree[5];        tree[2].right = tree[6];        tree[4].left = tree[7];        tree[4].right = tree[8];        for (int i = 0; i < 9; i++) {            for (int j = 0; j < 9; j++)             {                System.out.println("higher: t" + i + " ,lower: t" + j + " : "+ isSubNode(tree[i],tree[j]));            }        }    }    private static boolean isSubNode(TreeNode higher, TreeNode lower) {        if (higher.left == null && higher.right == null)            return false;        if (higher.left == lower || higher.right == lower)            return true;        TreeNode tempLeft = higher.left;        TreeNode tempRight = higher.right;        return isSubNode(tempLeft, lower) || isSubNode(tempRight, lower);    }}
0 0