題目描述
給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
**:public class treelinknode {
int val;
treelinknode left = null;
treelinknode right = null;
treelinknode next = null;
treelinknode(int val) {
this.val = val;
public class solution {
treelinknode getnext(treelinknode node)
if(node==null) return null;
if(node.right!=null){ //如果有右子樹,則找右子樹的最左節點
node = node.right;
while(node.left!=null) node = node.left;
return node;
while(node.next!=null){ //不是根結點,沒右子樹,則找第乙個當前節點是父節點左孩子的節點
if(node.next.left==node) return node.next;
node = node.next;
return null; //退到了根節點仍沒找到,則返回null
劍指offer之二叉樹總結
會用遞迴了二叉樹的問題就會一大半了.一.用遞迴求解 對於要利用二叉樹的規律的題都可以利用它的左節點也是其左子樹的根節點的特性來遞迴求解。可以說那種引數有根節點的題一般都可以用遞迴來解決,來看看 劍指offer 中可用遞迴解決的題 1.根據前序遍歷的性質,第乙個元素必然就是root,那麼下面的工作就是...
劍指Offer之 二叉樹的深度
題目 1 求二叉樹的最大深度和最小深度。2 判斷一棵二叉樹是不是平衡二叉樹。include using namespace std struct binarytreenode binarytreenode int value m nvalue value m pleft null m pright ...
劍指offer之二叉樹的深度
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。方法一 可以使用遞迴的方法,分別求左子樹和右子樹的深度,則樹的深度是 更大者 1。這是乙個遞迴的方法。方法二 使用層次遍歷的方法,每訪問一層,則深度 1,所有層的訪問結束之後,就等...