給定乙個二叉樹,樹中節點的資料結構如下:
class
treenode
}
任給乙個節點的值num(樹中節點的值各不相同),輸出該值對應的下乙個中序遍歷節點。
一、根據num用dfs遍歷得到num對應的節點node
public treenode dfsfindval
(treenode root,
int num)
if(root.val == num)if(
dfsfindval
(root.left, num)
!=null)
else
}
node有右子樹,則node的下乙個節點就是它的右子樹中最左的節點;
node沒有右子樹,且node沒有父節點。則node的下乙個節點為null;
node沒有右子樹,且node是其父節點的左子節點。則node的下乙個節點為其父節點;
node沒有右子樹,且node是其父節點的右子節點,則依次往上遍歷node的父節點,node的祖父節點。。。直到找到乙個節點,該節點是其父節點的左子節點或該節點的父節點為null,則該節點的父節點為所求。
**如下:
public treenode findnextnode
(treenode node)
//如果有右子樹
if(node.right != null)
return tempnode;
}else
//如果該點是其父節點的左子節點
if(node == node.father.left)
else
return tempnode.father;}}
}
二叉樹的下乙個節點
問題 題目給出的預設 為 1 coding utf 8 2 class treelinknode 3 def init self,x 4 self.val x5 self.left none6 self.right none7 self.next none 8class solution 9def ...
二叉樹的下乙個節點
coding utf 8 class treelinknode def init self,x self.val x self.left none self.right none self.next none 1 該節點有左子樹,說明左邊已經遍歷過,該節點作為根節點,下一步應該填右子樹,如果該節點有...
二叉樹的下乙個節點
題目描述 給定一棵二叉樹和其中的乙個節點,如何找出中序遍歷序列的下乙個節點?樹中的節點除了有兩個分別別指向左右子節點的指標,還有乙個指向父節點的指標 例如 這棵樹的中序遍歷是 d,b,h,e,i,a,f,c,g 解題思路 3 當結點的右子樹為空,且是它父節點的左子節點時,它的下乙個節點就是它的父節點...