多叉树的查找(广度优先遍历)

昨天面试,面试官问了一个题,求一个多叉树里面是否存在某个值,假设多叉树里面的元素都不重复。由于之前一直没有接触过多叉树,所以当时没怎么写出来,当时只是给了自己的思路。

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;

class TreeNode{
     int obj;  
    //TreeNode parentNode;  
    List<TreeNode> childList;  
}

public class Demo70 {
    public static boolean isFindK(TreeNode root,int k){
        boolean flag = false;
        Queue<TreeNode> queue = new ArrayDeque<>();

        queue.add(root);
        while (queue.size()!=0) {
            TreeNode tempNode = queue.poll();
            if (tempNode.obj==k) {//判断当前节点
                flag = true;
                break;
            }
            if (tempNode.childList!=null) {
                List<TreeNode> list = new ArrayList<>();
                list = tempNode.childList;
                for (int i = 0; i < list.size(); i++) {
                    queue.add(list.get(i));
                }
                list.clear();
            }

        }
        return flag;
    }
}

你可能感兴趣的:(About面试,数据结构&&算法)