获取一棵二叉树每一层最右边的节点 如 a / \ b c /\ /\ d e f g -> acg a / \ b c /\ / d e f -> acf a / \ b c /\ / d e f / g -> acfg
解决思路:
dfs遍历二叉树,遍历同时存储当前深度与max深度,判断当前是否最深节点,若是,则加入当前节点到result队列中,先递归右子树,再递归左子树;否则,依次递归右子树和左子树。
java code:
public static void main(String[] args) {
TreeNode g = new TreeNode("g");
TreeNode e = new TreeNode("e");
TreeNode d = new TreeNode("d", null, g);
TreeNode b = new TreeNode("b", d, e);
TreeNode f = new TreeNode("f");
TreeNode c = new TreeNode("c", f, null);
TreeNode a = new TreeNode("a", b, c);