class_docstr: A tree which can be used as a min/max heap or a sum tree
  Add or update item value - O(log N)
  Sampling an item - O(log N)
docstr: Propagate an update of a node's value to its parent node
  :param node_idx: the index of the node that was updated
  :return: None
docstr_tok: ["Propagate","an","update","of","a","node","'s","value","to","its","parent","node",":","param","node_idx",":","the","index","of","the","node","that","was","updated",":","return",":","None"]
code: def _propagate(self, node_idx: int) -> None:
      """
      Propagate an update of a node's value to its parent node
      :param node_idx: the index of the node that was updated
      :return: None
      """
      parent = (node_idx - 1) // 2
  
      self.tree[parent] = self.operation.value["operator"](
          self.tree[parent * 2 + 1], self.tree[parent * 2 + 2]
      )
  
      if parent != 0:
          self._propagate(parent)
  
imports: import operator
  import random
  from enum import Enum
  from typing import List, Tuple, Any
  import numpy
  from rl_coach.core_types import Transition
  from rl_coach.memories.memory import MemoryGranularity
  from rl_coach.memories.non_episodic.experience_replay import ExperienceReplayParameters, ExperienceReplay
  from rl_coach.schedules import Schedule, ConstantSchedule
label_desc: Use image node_id 2 for calling the SegmentTree obj's underlying member method code with example usage: obj._propagate(node_idx) without return types