給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
1、最傻的方法
2、更好的方法
/**
* 當前節點與下一節點的關係
* --當前節點有右子樹,右子樹的最左節點即是下乙個節點
* --當前節點沒有右子樹,找作為左孩子的父節點
*/public treelinknode getnext
(treelinknode pnode)
return
findfatherasleftchild
(pnode);}
public treelinknode findleft
(treelinknode node)
treelinknode p=node;
while
(p.left!=null)
return p;
}/**
* -cur作為父節點的左孩子
* --返回父節點
* -cur作為父節點的右孩子
* --向上走,判斷當前節點是否為左孩子,若是的話返回當前節點父節點,若不是,繼續向上走,直到走到root節點。
*/public treelinknode findfatherasleftchild
(treelinknode node)
treelinknode cur=node;
while
(cur!=null)
else
}else
}return null;
}
劍指offer系列 二叉樹的深度
題目描述 輸入一棵二叉樹,求其深度 樹的深度定義為 從根節點到葉子節點的路徑長度的最大值 示例 分析 對每個節點而言,以該節點為根節點的樹的深度為左子樹和右子樹深度的較大值加1.因此用遞迴可以很容易的實現 int depth treenode root 分析 同樣可以用遞迴來實現。為了使每個節點只遍...
劍指offer 二叉樹 二叉樹搜尋樹
package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...
劍指offer 二叉樹 二叉樹的映象
操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 51,交換左右子樹 2,遞迴交換左右子樹的左右子節點 package offertest title mirror description author 田...