树的深度优先遍历原理
对每一个可能的分支路径深入到不能再深入为止,每个节点只能访问一次。
利用栈先进后出的特性。首先将根节点压入栈中,接着弹出根节点,依次压入右节点和左节点,此时,左节点位于栈的顶端,接着,将左节点弹出,将左节点的右、左子节点依次压入,若没有子节点,则弹出右节点,再依次压入右节点的右、左子节点,以此类推。
代码实现
Stack<TreeNode> myStack=new Stack<>();
myStack.add(root);
while(!myStack.isEmpty()){
TreeNode node=myStack.pop();
treeList.add(node);
if(node.right!=null){
myStack.push(node.right);
}
if(node.left!=null){
myStack.push(node.left);
}
}