給定乙個二叉樹,返回它的 後序 遍歷。
示例:
輸入: [1,null,2,3] 1\2/
3 輸出: [3,2,1]
/** * definition for a binary tree node.
* struct treenode
* }; */
class
solution
//此時已到達最深且最左的結點
node =stk.top();
//此時node有兩種情況
if(node->right ==null)
else
}if(stk.empty()) node = null; //
當滿足1.2(2)條件時, 棧就空了, 所以為了退出最外層的while, 要令node=null
}
else
}return
vec;
}};
遞迴法:
/** * definition for a binary tree node.
* struct treenode
* }; */
class
solution
void lrd(treenode* root, vector&vec)
lrd(root->left, vec);
lrd(root->right, vec);
vec.emplace_back(root->val);
}};
這裡順便總結以下遞迴法的思想:
1.想清楚你要幹什麼( 比如後序遍歷二叉樹,先左,然後右,最後中間結點插入,那麼就直接寫: lrd(left),ldr(right), vec.emplace_back(root->val) )
2.想清楚什麼時候結束遞迴(空的時候返回)
二叉樹的後序遍歷
1 問題描述 給出一棵二叉樹,返回其節點值的後序遍歷。給出一棵二叉樹 1 2 3返回 3,2,1 2 問題實現 與前序遍歷 中序遍歷類似。若二叉樹為空,則空操作返回。否則後序遍歷根節點的左子樹,後序遍歷根節點的右子樹,訪問根節點。3 definition of treenode class tree...
二叉樹的後序遍歷
節點和樹類 public class treenode public treenode integer val override public string tostring public class tree 遞迴實現 public arraylistafter treenode node aft...
二叉樹的後序遍歷
如下圖表示一顆二叉樹,對它進行先序遍歷操作,採用兩種方法,遞迴和非遞迴操作。遍歷結果為 4526731。1 遞迴操作 思想 若二叉樹為空,返回。否則 1 後序遍歷右子樹 2 後序遍歷左子樹 3 遍歷根節點 void postorder bitree root 2 非遞迴操作 void postord...